变量似乎会改变每个循环的大小

时间:2019-06-27 17:19:20

标签: matlab

我的代码给我一个错误消息,即Y似乎在每个循环中都会改变大小。

yo = [0.5;0.5;1];
% computing the trajectory
dt = 0.01;
tspan = (dt:dt:100); % number of time steps
Y(:,1)= yo;
yinput = yo;
for i = 1: tspan(end)/dt
    time = i*dt;
    youtput = rk4angelstepb(@rosslerb,dt,yinput,a,b,c);
    *Y = [Y,youtput]*;
    yinput = youtput;   
end

我的代码运行了,但是我遇到两个问题:首先,一行被盯着发出警告,说Y似乎在每个循环中都会改变。其次,我尝试创建一个大Y,第一个是初始条件。但是我发现Y不等于我的初始状态yo。 我在做什么错了。

1 个答案:

答案 0 :(得分:0)

如果提前分配内存,Matlab的运行效率将更高。像Y = [Y;youtput];之类的语句会逐步扩展Y,这会降低效率。看来您正在寻求解决方案。这是先分配空间然后在循环内一次设置一个元素的东西。

Y = zeros(tspan(end)/dt,1);
for i = 1: tspan(end)/dt
    time = i*dt;
    youtput = rk4angelstepb(@rosslerb,dt,yinput,a,b,c);
    Y(i) = youtput;
    yinput = youtput;
end