当在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{:})