我打算使用matlab绘制速度与时间的关系图。时间的变化为0.05
,总时间为15
。当时间改变时,图形将改变并保存图形。我有mat文件,其中包含时间和速度的所有数据。
例如,t=0
,v=0
,绘制并保存,t=0.05
,v=1
,绘制并保存到t=15
。
我尝试使用v=v+1
(其行为类似于i++
)但未能在第二行中读取v
的值。还有其他任何方法吗?
谢谢。 代码是
i = 001
dt = t(2,1) - t(1,1);
k = dt*(i-1);
filename1 = 'front_data';
matFileName = sprintf('%s.mat', filename1);
matData = load(matFileName);
t = matData.time;
fv = matData.front_velocity;
fig = figure%('visible', 'off');
s = t(1,1);
fv = fv(1,1);
lot (s,fv,'*')
pic_filename = sprintf('front_data%02d.jpeg', k);
print(fig,pic_filename,'-djpeg')
istart = 002
iend = 301
for i = istart:iend
k = dt*(i-1);
t = t+dt
filename1 = 'front_data';
matFileName = sprintf('%s.mat', filename1);
matData = load(matFileName);
t = matData.time;
fv = matData.front_velocity;
v = fv(1,1);
v = v+1;
h = figure
axis([0 15 0 0.6])
plot(t,v,'*')
pic_filename = sprintf('front_data%02d.jpeg', k);
print(h,pic_filename,'-djpeg')
end
我推荐的例子是[https://www.mathworks.com/matlabcentral/answers/110632-how-to-increment-a-variable]
答案 0 :(得分:0)
我将你的例子简化为必要部分。
istart = 2;
iend = 301;
counter=istart;
%load data
% filename1 = 'front_data';
% matFileName = sprintf('%s.mat', filename1);
% matData = load(matFileName);
% t = matData.time;
% fv = matData.front_velocity;
%for demonstaration
t=0:.05:15;
fv=rand(size(t));
for i = istart:iend
%update
time = t(istart:counter);
values = fv(istart:counter);
%plot
plot(time,values,'*')
%increase index
counter=counter+1;
end
当您在循环中加载始终相同的数据时,您可以在循环外执行一次,并且为了绘图,您只需更新要绘制的矢量的长度。您也可以将新值附加到实际列表中。