Matlab 使用for循环创建矩阵时,变量连续为零

Matlab 使用for循环创建矩阵时,变量连续为零,matlab,matrix,Matlab,Matrix,这是我的密码 %Blasius solution by Euler Method %--------------- g0=zeros(101,1); g1=zeros(101,1); g2=zeros(101,1); %--------------- g0(1)=0; g1(1)=0; % g1(101)=1; g2(1)=2; %--------------- G=zeros(101,3); T=zeros(101,3); G=[g0 g1 g2]; T=[g1 g2 (-1)*g0.*g2]

这是我的密码

%Blasius solution by Euler Method
%---------------
g0=zeros(101,1);
g1=zeros(101,1);
g2=zeros(101,1);
%---------------
g0(1)=0;
g1(1)=0;
% g1(101)=1;
g2(1)=2;
%---------------
G=zeros(101,3);
T=zeros(101,3);
G=[g0 g1 g2];
T=[g1 g2 (-1)*g0.*g2];
%Euler method%
for i=1:100
G(i+1) = G(i) + (T(i)*0.1);
end

我错过了什么?我试图创建
G
矩阵,但它始终是
101*3
零矩阵。看起来for循环不起作用,但我不知道为什么。

我知道了代码不起作用的原因:

首先,您需要调用行索引,而不是线性索引,即将循环更改为:

for ii=1:100
    G(ii+1,:) = G(ii,:) + (T(ii,:)*0.1);
end
请注意,我还使用了
ii
,而不是
I
,因为

显然,这会导致
T
保持不变,因为您不会更改它。将其初始化为零数组,并仅将第一行的第二个元素设置为
2
,但将其余元素保留为零。因此,将一行
T
添加到一行
G
将不起任何作用,因为您正在向现有行添加零。这就是为什么
G
的第二行变为
[0.2 2]
并且不再更改,因为您只是在其中添加零

您可能忘记添加代码行,该行为
T
的行分配一个新值。坚持您在评论中的建议:

for ii=1:100
    G(ii+1,:) = G(ii,:) + (T(ii,:)*0.1);
    T(ii+1,:) = G(ii,:);
end

这是一个新的解决方案,我们花了几个小时,但最终找到了答案

%Blasius solution by Euler Method
%---------------
g0=zeros(101,1);
g1=zeros(101,1);
g2=zeros(101,1);
g2(1)=2;
%---------------
G=zeros(101,3);
T=zeros(101,3);
G=[g0 g1 g2];
T=[g1 g2 ((-1)*g0.*g2)];
 %Euler method%
for i=1:100
A=[g0(i) g1(i) g2(i)] ;
B=[g1(i)*0.1 g2(i)*0.1 (-1).*g0(i)*g2(i)*0.1];
C(i,:)=A+B;
g0(i+1)=C(i,1);
g1(i+1) =C(i,2);
g2(i+1) =C(i,3);
end

您可能需要指定是在索引中获取列还是行,而不是使用纯线性索引。同样,你的T总是零,因为你把零元素和零元素相乘,一次和2相乘,2仍然是零。在你的循环中,你把零和零相加相乘,结果显然是零;G(1)=[02]然后G(2)=[02]+[020]*0.1=[020.22]G(3)=[020.22]+(020]*0.1=[0.222.2]第三行之后应该去掉零吗?首先谢谢你的兴趣。我的代码就是这样,实际上我没有忘记在这里写什么,正如你所看到的,我是一个初学者。我已经改变了for循环,但我不知道如何分配新的T,我应该在哪里做。它看起来会是这样吗?
G(ii,2)=T(ii,1)
我应该在哪里分配它?它将在循环中吗?