在循环中使用向量填充矩阵并应用操作

时间:2018-11-26 20:09:01

标签: matlab

我正在用矩阵研究Matlab。我想重现此矩阵并将求和应用于行中的元素。

enter image description here

此代码定义了两个向量:

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中重现此矩阵。感谢您的帮助。

2 个答案:

答案 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中都是一个标量。您尝试称其为三元素向量。您也没有定义bc。在R中,可以判断您来自哪里,而在MATLAB中则可能。