Matlab 如何将for循环的结果放入矩阵的每列中?
我有一个代码如下:Matlab 如何将for循环的结果放入矩阵的每列中?,matlab,Matlab,我有一个代码如下: a=zeros(5,1); f=zeros(5,5); for i=1:5 a(i,1)=5; f(:,i)=a; end 我希望每个循环的结果是矩阵f的每列。我的意思是f=[a(1)a(2)a(3)a(4)a(5)],其中a(I)来自for循环中的每个循环。但结果是: 5 5 5 5 5 0 5 5 5 5 0 0 5 5 5 0 0 0 5
a=zeros(5,1);
f=zeros(5,5);
for i=1:5
a(i,1)=5;
f(:,i)=a;
end
我希望每个循环的结果是矩阵f的每列。我的意思是f=[a(1)a(2)a(3)a(4)a(5)],其中a(I)来自for循环中的每个循环。但结果是:
5 5 5 5 5
0 5 5 5 5
0 0 5 5 5
0 0 0 5 5
0 0 0 0 5
我对matlab是新手。如果您能告诉我哪里错了,我们将不胜感激。请这样做
a=zeros(5,1);
f=zeros(5,5);
a(:,1)=5;
f(1,:)=transpose(a);
我看到在第4行你有一个(:,1)=5。因为它是在一个循环中,a的值会继续扩展,所以首先会有a(1)=5,a(2)=5,a(3)=5,等等。您要做的是在矩阵f中指定a的具体值。您可以通过以下方式完成此操作: a=零(5,1) f=零(5) 对于i=1:5 a(i,1)=5 f(i,i)=a(i,1); 结束
disp(f)您能澄清一下您的问题吗?我已经读了好几遍了,我仍然不知道你想做什么。你能告诉我们你想要的结果是什么吗?例如,对于i=1,我有一个新的“a”,它是a(i=1)=[5;0;0;0]。同样对于i=2,我有一个(i=2)=[0;5;0;0;0]等等。我希望矩阵“f”由这些结果组成,作为其列。像这样:f=[5 0 0;0 5 0 0;0 0 5 0 0;0 0 0 0 5 0;0 0 0 0 0 5]。我知道我可以做一个对角矩阵,但我需要使用这种形式。即使你仍然需要一个循环,你也可以放弃使用
a
a
,因此a
并不像您所想的那样是新的,它会记住您在以前的迭代中所做的每个任务。是的,您是对的。我在每次迭代中都更新了“a”,它成功了。谢谢你确定吗?我想他是想改变f矩阵。谢谢你提醒我,我没有正确地阅读问题:)