这是我的问题:我有一个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] ?
我想找到一种方法,使其成为一种干净和优化的方式。
答案 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) ) );