使用vector作为索引不能按预期工作,matlab

时间:2017-05-20 21:00:27

标签: matlab matrix

给定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]
有什么想法吗?

2 个答案:

答案 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))'