我是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)值中的每一个,以便我可以绘制它们的情节?
答案 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
请注意,我已预先分配了数组x
,t
和out
,以便代码更快。您可以在此处阅读有关函数的更多信息:http://www.mathworks.com/help/matlab/ref/function.html