【问题标题】:how to access an element of an n-D matrix where index comes from a mathematical operation [duplicate]如何访问索引来自数学运算的n维矩阵的元素[重复]
【发布时间】:2018-05-26 07:12:24
【问题描述】:

如何访问 n 维矩阵的元素,其中索引来自 Matlab 中的数学运算?

例如,我有一个名为 A 的 4D 矩阵。
我想访问由 (3,4,5,6) - (2,3,4,5) 产生的元素 1,1,1,1

如果数组可以是任意维度 d 并且减法后的数组始终是 d 个元素,我有什么办法可以做到这一点?

【问题讨论】:

    标签: arrays matlab matrix indexing


    【解决方案1】:

    一种可能的方法是利用 MATLAB 可以对任何 n 维数组以及行列类型索引使用线性索引这一事实。然后你只需要计算你的操作结果的线性指数。

    可能有一种更优雅的方式来做到这一点,但如果 x 是保存您的操作结果的数组,那么以下工作

    element = A(sum((x-1).*(size(A).^[0:length(size(A))-1]))+1);

    sub2ind 函数感觉在这里应该有所帮助,但似乎没有。

    【讨论】:

    • 不错的方法!这是我即将发布的答案的一部分:-)
    【解决方案2】:

    另一种方法是转换为元胞数组,然后转换为逗号分隔的列表:

    A = rand(3,4,5,6); % example A
    t = [2 1 3 4]; % example index
    u = num2cell(t);
    result = A(u{:});
    

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      相关资源
      最近更新 更多