我正在用矩阵研究Matlab。我想重现此矩阵并将求和应用于行中的元素。
此代码定义了两个向量:
unitsvector=1:5;
reordervector=1:3;
然后,我创建一个空矩阵来存储值:
resultvec=zeros(size(unitsvector,2)*size(reordervector,2),3);
最后,这是我使用的循环,但它不起作用:
for a=1:length(resultvec)
for b=reordervector
for c=unitsvector
resultvec(a,1)=b;
resultvec(a,2)=c;
resultvec(a,3)=b+c;
end
end
end
我该如何在matlab中重现此矩阵。感谢您的帮助。
答案 0 :(得分:1)
您可以在没有for循环的情况下使用meshgrid
。
[a,b] = meshgrid(1:5,1:3);
M = [a(:) b(:)];
M(:,3) = sum(M,2); % Create third column by summing first two
答案 1 :(得分:1)
您为什么要循环播放? sum
实际上具有矢量支持;一个简单的resultvec = [a(:,1),a(:,2),sum(a,2)]
就可以了。
关于您的代码:当然不起作用。您期望a
的内容是什么?您创建a
作为循环索引,循环索引的运行范围为1:length(resultvec)
。如此,在每个循环迭代a
中都是一个标量。您尝试称其为三元素向量。您也没有定义b
和c
。在R中,可以判断您来自哪里,而在MATLAB中则可能。