通过调用mat文件为图中的每个参数绘制曲线

时间:2017-01-10 21:42:43

标签: matlab matlab-figure

我正在做类似于以下示例的事情:

t=linspace(0,1);
z=rand(1);
theta=pi*rand(1);
a_range=[1,2,3];
for nplot=1:3
   a=a_range(nplot);

    x=z*t.^2+a*sin(theta);

end

fname=['xsin.mat'];
save(fname)

参数 a 有三个不同的值。对于 a 的每个值,我想在单个图中绘制函数。所以最后我会有三个数字。我可以使用子图来做到这一点,但这将在一个图中生成三个图,这不是我想要的。

在新脚本中,我加载了mat文件:

load('xsin.mat')

for nplot=1:3

figure(nplot)
plot(t,x)
end

但是我得到一个数字而不是三个数字。我的意思是a = 1,我应该绘制图1中的曲线;对于a = 2,我应绘制图2中的曲线,依此类推。我怎样才能做到这一点?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您在每次迭代中都会覆盖x;您可以通过将相应x的每个nplot保存在矩阵X的单独列中来修改代码(对代码进行最少的更改):

t=linspace(0,1);
z=rand(1);
theta=pi*rand(1);
a_range=[1,2,3];

X = NaN(length(t), length(a_range));  % Create matrix to hold x values

for nplot=1:3
   a = a_range(nplot);
   x = z * t.^2 + a * sin(theta);
   X(:,nplot) = x;  % Store x in column of X
end

fname=['xsin.mat'];
save(fname)

然后,创建数字:

load('xsin.mat')

for nplot=1:3
   x = X(:,nplot);  % Retrieve x from column of X
   figure(nplot)
   plot(t,x)
end