我正在做类似于以下示例的事情:
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中的曲线,依此类推。我怎样才能做到这一点?任何帮助表示赞赏。
答案 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