在matlab中使用2个变量绘制图表

时间:2017-10-11 08:20:30

标签: matlab variables plot

我打算使用matlab绘制速度与时间的关系图。时间的变化为0.05,总时间为15。当时间改变时,图形将改变并保存图形。我有mat文件,其中包含时间和速度的所有数据。

例如,t=0v=0,绘制并保存,t=0.05v=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]

1 个答案:

答案 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

当您在循环中加载始终相同的数据时,您可以在循环外执行一次,并且为了绘图,您只需更新要绘制的矢量的长度。您也可以将新值附加到实际列表中。