图左为512*512的灰度图,图右为512*512*的彩色图,
在测试灰度图的尺寸时,调用了函数
P=imread('lena.jpg');
[M,N]=size(P);
此时 M=512;N=512;
在测试彩色图的尺寸时,沿用了代码
P=imread('lena.jpg');
[M,N]=size(P);
结果 M=512;N=1536;
N并不是预想的512;
查询了官方文档,得到,
% [M,N] = SIZE(X):对于矩阵 X,以两个单独的输出变量返回行数和列数。
% [M1,M2,M3,...,MN] = SIZE(X):对于 N>1 的情况,返回数组 X 的前 N 维的尺寸。如果输出变量的数量 N % 不等于 NDIMS(X)(X 的维度数),则:
% 如果 N > NDIMS(X),SIZE 函数会在“额外”的变量中返回 1。
% 如果 N < NDIMS(X),最后一个输出变量 MN 将包含从第 N 维到 NDIMS(X) 维的尺寸的乘积。
例如[M,N]=size(P);也就是等号前的数组维度小于P的维度时,MATLAB会把超出的维度折叠到N,因此N=512*3=1536;
因此规范的size()函数调用格式如下
B = ones(4, 3, 2, 5);
[C,D,~] = size(B);
这样可以保证C,D为我们想要的输出(C=4;D=3;)