Matrix包含MATLAB中另一个矩阵的值

时间:2014-07-27 09:42:52

标签: matlab

这是我的问题:我有一个4阶矩阵A(知道我有一个非常大的矩阵):

        A=[3 4 5 2;
    1 2 4 6;
    3 4 8 7;
    2 4 3 7]

和矩阵B包含矩阵A的索引行和列:

        B=[2 3 4 1;
    4 3 2 1;
    3 2 1 4;
    4 2 3 1;
    1 2 3 4]

我搜索了一个向量C(5,1),以便:

    C(1,1)= A(B(1,1),B(1,2))+A(B(1,2), B(1,3))+A(B(1,3), B(1,4))
    =A(2,3)+A(3,4)+A(4,1)
    C(2,1)= A(4,3)+A(3,2)+A(2,1)
    C(3,1)= A(3,2)+A(2,1)+A(1,4)
    C(4,1)= A(4,2)+A(2,3)+A(3,1)
    C(5,1)= A(1,2)+A(2,3)+A(3,4)

所以

    C=[13;
    8; 
    7;
    11; 
    15] ?

我想找到一种方法,使其成为一种干净和优化的方式。

1 个答案:

答案 0 :(得分:0)

您可以使用sub2ind转换为线性索引

szA = size(A);
C = A( sub2ind( szA, B(:,1), B(:,2) ) ) +...
    A( sub2ind( szA, B(:,2), B(:,3) ) ) +...
    A( sub2ind( szA, B(:,3), B(:,4) ) );