我正在做类似于以下示例的操作:
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 中的曲线,依此类推。我该怎么做?任何帮助,不胜感激。
您在每次迭代中都会覆盖x
;您可以通过将各个nplot
的每个x
保存在矩阵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