在Matlab中,显然,当我在这两种方式中使用大小时,我会得到不同的宽度和高度值:
% way 1
[height, width] = size(myLoadedImage);
% way 2
height = size(myLoadedImage, 1);
width = size(myLoadedImage, 2)
为什么这两种方式不同?
答案 0 :(得分:3)
阅读size
功能的complete help。特别是它说
[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).
如您的评论所示,您的图片是一个三维数组。因此,根据手册,如果您只使用[h,w] = size(...)
要求3种尺寸中的2种,则参数w
将包含第2和第3维的产品。在执行h = size(..., 1)
和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
。
答案 1 :(得分:0)