从多维数组中提取一个维度

时间:2016-12-31 10:30:28

标签: arrays matlab multidimensional-array

假设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的数量因维度而有所不同。

提前致谢

1 个答案:

答案 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