显然,在 Matlab 中,当我以这两种方式使用大小时,我会得到不同的宽度和高度值:
% way 1
[height, width] = size(myLoadedImage);
% way 2
height = size(myLoadedImage, 1);
width = size(myLoadedImage, 2)
为什么这两种方式不同?
显然,在 Matlab 中,当我以这两种方式使用大小时,我会得到不同的宽度和高度值:
% way 1
[height, width] = size(myLoadedImage);
% way 2
height = size(myLoadedImage, 1);
width = size(myLoadedImage, 2)
为什么这两种方式不同?
阅读该功能的完整帮助size
。具体来说,它说
[d1,d2,d3,...,dn] = size(X), for n > 1, returns the sizes of the dimensions of
the array X in the variables d1,d2,d3,...,dn, provided the number of output
arguments n equals ndims(X).
If n does not equal ndims(X), the following exceptions hold:
n < ndims(X) di equals the size of the ith dimension of X for 0<i<n, but dn
equals the product of the sizes of the remaining dimensions of X,
that is, dimensions n through ndims(X).
如您的评论所示,您的图像是一个 3 维数组。因此,根据手册,如果您只要求 3 种尺寸中的 2 种[h,w] = size(...)
,则参数w
将包含第 2 维和第 3 维的乘积。执行h = size(..., 1)
and时w = size(..., 2)
,您会得到第一维和第二维的准确值。
模拟您的案例:
>> im = randn(512, 143, 3);
>> h = size(im, 1)
h = 512
>> w = size(im, 2)
w = 143
>> [h, w] = size(im)
h = 512
w = 429
请注意,在最后一种情况下w = 143 * 3 = 429
。