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(k,k)=5;结束。否则,您所做的错误是您忘记了在每次迭代时重置
a
,因此
a
并不像您所想的那样是新的,它会记住您在以前的迭代中所做的每个任务。是的,您是对的。我在每次迭代中都更新了“a”,它成功了。谢谢你确定吗?我想他是想改变f矩阵。谢谢你提醒我,我没有正确地阅读问题:)