【问题标题】:Extract one dimension from a multidimensional array [duplicate]从多维数组中提取一维[重复]
【发布时间】:2017-05-15 10:04:28
【问题描述】:

假设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 的数量因维度而异。

提前致谢

【问题讨论】:

    标签: arrays matlab multidimensional-array


    【解决方案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

    【讨论】:

    • 感谢阿迪,它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2012-09-29
    • 2020-06-11
    相关资源
    最近更新 更多