【问题标题】:Octave/MATLAB: Using a matrix to access elements in a matrix without loopsOctave / MATLAB:使用矩阵访问矩阵中的元素而无需循环
【发布时间】:2018-10-14 19:23:19
【问题描述】:

考虑一下,这两个矩阵:

>> columns = [1,3,2,4]

>> WhichSet = 
       [2, 2, 1, 2;
        1, 1, 2, 1;
        1, 2, 1, 2;
        2, 1, 2, 2]

我的意图是执行以下操作

>> result = [WhichSet(1,columns(1)), WhichSet(2,columns(2)), WhichSet(3, columns(3)) and WhichSet(4, columns(4))]
result = [2,2,2,2]

没有任何循环。

【问题讨论】:

    标签: matlab multidimensional-array octave


    【解决方案1】:

    由于索引的工作原理,您不能像现在一样插入它们,除非您使用线性索引

    您想要的线性指数是:

    ind=sub2ind(size(WhichSet),1:size(whichSet,1),columns);
    

    然后

    out=WhichSet(ind);
    

    【讨论】:

    • 我正在尝试这种方法,但在我的代码中,我将列作为列向量,所以我收到“所有下标必须具有相同大小”的错误。看了你的解决方案后,我意识到我只需要转置它。太感谢了!它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2012-05-02
    相关资源
    最近更新 更多