假设A
是大小为3,4,5
的多维数组(MDA),而B
是另一个大小为3,4,5,6
的MDA。
我知道A(1,:,:)
或B(1,:,:,:)
都可以沿第一维提取元素。
我现在需要编写一个通用程序来从MDA中提取k-th
维,而不知道它的大小。
例如,MDA C
具有6
维度:4,5,6,7,8,9
,我想要提取C(:,:,k,:,:,:)
。
有时,MDA' D'有4
维度3,4,5,6
,我想要另一个提取D(k,:,:,:)
。
也就是说,我的问题是colon
的数量因维度而有所不同。
提前致谢
答案 0 :(得分:1)
您可以使用字符串数组动态索引数组:
function out = extract(arr,dim,k)
subses = repmat({':'}, [1 ndims(arr)]);
subses(dim) = num2cell(k);
out = arr(subses{:});
其中dim
是您要选择的维度,k
是该维度内的索引。
我使用了这个答案中的代码: https://stackoverflow.com/a/27975910/3399825