当在Matlab中索引矩阵时,我能只指定第一个或最后一个N维,并且所有其他维度都“自动选择”吗?
例如,我正在编写一个函数,它接受一个图像,并用imshow显示它,该函数可以显示三维彩色图像(例如1024×768×3)或二维单色阵列(例如1024x768)。
我的函数不关心图像有多少颜色通道,imshow会处理这个问题我只想传递参数来选择一个区域:

imshow(frame(x1:x2, y1:y2, :))

我应该在最后一个冒号处加上什么来表示“包括所有其他维度”?

最佳答案

可以使用逗号分隔列表扩展和':'索引。
假设您的输入是:

A = rand([7,4,2,3]);

要仅检索前2个:
cln = {':', ':'};
A(cln{:})

要检索最后3个:
cln = {1, ':', ':', ':'};
A(cln{:})

可概括为:
sten            = 2:3;    % Which dims to retrieve
cln(1:ndims(A)) = {1};
cln(sten)       = {':'};
A(cln{:})

07-24 20:39