给定nXm矩阵A和mX2矩阵B以及大小为mX1的矩阵C,其中包含1s和2s C = [1 2 1 2 1 ...],根据哪一列,我希望A的每一行都是乘以。如何才能做到这一点?或者等效地,给定D = A * B我如何只能访问由C指示的值。我尝试了D(:,C),但结果不是预期的。
例a = [1 2; 3 4; 5 6]。 c = [1 2 1]。 a(?)= [1 4 5]
有什么想法吗?
答案 0 :(得分:1)
%example data
n=10;m=20;
A=rand(n,m)
B=rand(m,2)
C=round(rand(m,1))+1;
%solution:
B2=B(:,1); %multiplication vector
B2(C==2)=B(C==2,2) %change the ones where C==2
A*B2
答案 1 :(得分:1)
您可以为最后一个示例运行以下命令:
a(sub2ind([3,2],1:3,c))'
一般情况下,您可以执行以下操作:
% n is the length of the D which is nx2 matrix
D(sub2ind([n,2],1:n,C))'