2016-12-31 128 views
0

假设A是尺寸为3,4,5的多维数组(MDA),而B是尺寸为3,4,5,6的另一个MDA。从多维数组中提取一维

我知道A(1,:,:)B(1,:,:,:)都可以沿第一维提取它们的元素。

我现在需要编写一个通用程序来从MDA中提取k-th维度而不知道它的大小。

例如,MDA C6尺寸:4,5,6,7,8,9,我想提取C(:,:,k,:,:,:)

有时,MDA'D'有4尺寸:3,4,5,6,我想要另一个提取D(k,:,:,:)

也就是说,我的问题是colon的数字因维数而异。

在此先感谢

回答

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

+0

感谢阿迪,它的作品! – nam