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



我正在做类似于以下示例的操作:

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

最新更新