Matlab 在循环中用向量填充矩阵并应用操作
我正在用一个矩阵处理matlab。我想复制这个矩阵,并对行中的元素应用sum 这段代码定义了两个向量:Matlab 在循环中用向量填充矩阵并应用操作,matlab,Matlab,我正在用一个矩阵处理matlab。我想复制这个矩阵,并对行中的元素应用sum 这段代码定义了两个向量: unitsvector=1:5; reordervector=1:3; 然后,我创建一个空矩阵来存储值: resultvec=zeros(size(unitsvector,2)*size(reordervector,2),3); 最后,这里是我使用的循环,但它不起作用: for a=1:length(resultvec) for b=reordervector f
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中重现这个矩阵。谢谢您的帮助。您可以使用
meshgrid
来完成此操作,而无需使用for循环
[a,b] = meshgrid(1:5,1:3);
M = [a(:) b(:)];
M(:,3) = sum(M,2); % Create third column by summing first two
您可以在不使用for循环的情况下使用
meshgrid
[a,b] = meshgrid(1:5,1:3);
M = [a(:) b(:)];
M(:,3) = sum(M,2); % Create third column by summing first two
你为什么要绕圈子?实际上有向量支持;一个简单的
resultvec=[a(:,1),a(:,2),sum(a,2)]
就可以了
至于你的代码:当然不行了。您希望
a
的内容是什么?创建a
作为循环索引,该索引在1:length(resultvec)
范围内运行。因此,在每个循环迭代中,a
是一个标量。你试着把它叫做三元素向量。您也没有定义b
和c
。这在R中是可能的,可以判断您来自哪里,但在MATLAB中不可能。为什么要循环?实际上有向量支持;一个简单的resultvec=[a(:,1),a(:,2),sum(a,2)]
就可以了
至于你的代码:当然不行了。您希望
a
的内容是什么?创建a
作为循环索引,该索引在1:length(resultvec)
范围内运行。因此,在每个循环迭代中,a
是一个标量。你试着把它叫做三元素向量。您也没有定义b
和c
。这在R中是可能的,可以判断你来自哪里,但在MATLAB中是不可能的。我甚至没有考虑实际的向量创建,我忽略了这一点。很好地理解了它,你的答案比我的好得多。我甚至没有考虑实际的向量创建,我错过了。很好地理解了它,你的答案比我的好得多。