从多维数组中提取一维
问题描述:
假设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
的数字因维数而异。
在此先感谢
答
您可以使用字符串数组索引数组动态:
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
感谢阿迪,它的作品! – nam