根据行号和列号在数组中查找值
find value in array according to the row and column number
我有两个矩阵A和B,矩阵A(1,:)=[1 2]的第一行是指矩阵B(1,2)=21的行列数,现在我要在没有循环的情况下对矩阵 A 的另一行执行此操作?
A=[1 2;2 3;1 3;3 3];
B=[1 21 34;45 65 87;4 55 66];
for i=1:4
d(i,:)=B(A(i,1),A(i,2))
end
d =[21; 87;34;66]
使用 sub2ind
获取 B
所需值的线性索引,然后使用这些索引检索这些值。
d = B(sub2ind(size(B), A(:,1), A(:,2)));
>> d
d =
21
87
34
66
我想下面的代码一定适合你:
A=[1 2;2 3;1 3;3 3];
B=[1 21 34;45 65 87;4 55 66];
d=diag(B(A(:,1),A(:,2)))
sub2ind
的替代方法是
d = B(A(:,1)+ (A(:,2)-1)*size(B,1));
我有两个矩阵A和B,矩阵A(1,:)=[1 2]的第一行是指矩阵B(1,2)=21的行列数,现在我要在没有循环的情况下对矩阵 A 的另一行执行此操作?
A=[1 2;2 3;1 3;3 3];
B=[1 21 34;45 65 87;4 55 66];
for i=1:4
d(i,:)=B(A(i,1),A(i,2))
end
d =[21; 87;34;66]
使用 sub2ind
获取 B
所需值的线性索引,然后使用这些索引检索这些值。
d = B(sub2ind(size(B), A(:,1), A(:,2)));
>> d
d =
21
87
34
66
我想下面的代码一定适合你:
A=[1 2;2 3;1 3;3 3];
B=[1 21 34;45 65 87;4 55 66];
d=diag(B(A(:,1),A(:,2)))
sub2ind
的替代方法是
d = B(A(:,1)+ (A(:,2)-1)*size(B,1));