存储每次迭代的单个值以进行绘图

时间:2014-10-15 21:26:12

标签: matlab loops iteration

我是Matlab的新手,试图弄清楚如何从每次运行生成1000个值的迭代过程中存储单个值。

[filename.m]

 x(1)=0;
 t(1)=0;
 dt=1;
 kB=1.381e-23;
 T=310;
 R=3.05e-9;
 visc=0.007;
 friction=6*pi*visc*R;
 D=kB*T/friction;
 dxdiff=(2*D*dt)^0.5;
 Force_applied=1e-15;
 for i=(2:1000)
     vx=Force_applied/friction;
     dx=vx*dt;
     x(i)=x(i-1)+dxdiff*randn+dx;
     t(i)=(i-1)*dt;
 end

因此,当我运行它时,它会生成1000个坐标,但我只想为每次迭代存储最终值x(1000)。所以我的最终问题是我需要添加到

for ii=1:1000
filename
end

为了存储一千个x(1000)值中的每一个,以便我可以绘制它们的情节?

1 个答案:

答案 0 :(得分:0)

您需要将filename转换为具有输出的函数,如下所示:

function output = filename() 
 x(1000)=0; %Preallocate x
 t(1000)=0; %Preallocate t
 dt=1;
 kB=1.381e-23;
 T=310;
 R=3.05e-9;
 visc=0.007;
 friction=6*pi*visc*R;
 D=kB*T/friction;
 dxdiff=(2*D*dt)^0.5;
 Force_applied=1e-15;
 for jj=(2:1000)
     vx=Force_applied/friction;
     dx=vx*dt;
     x(jj)=x(jj-1)+dxdiff*randn+dx;
     t(jj)=(jj-1)*dt;
 end
 output = x(1000); %Here we set the value of the output variable

然后你可以像

一样调用这个函数
out(1000) = 0; %Preallocate out
for ii = 1:1000
out(ii) = filename();
end

请注意,我已预先分配了数组xtout,以便代码更快。您可以在此处阅读有关函数的更多信息:http://www.mathworks.com/help/matlab/ref/function.html