当使用clear时,同一图形中的不同图谱。

问题描述 投票:1回答:3

我有3个.m文件,每个文件都绘制了一个图形。我需要将它们三个的结果叠加在一起,所以我做的是将这三个代码复制到一个.m文件中。

问题是我需要清理(通过使用命令 "clear"),在每个程序之间,因此,在每个图之间。

谁有什么建议,如何将这三个结果绘制在一个图中,请问?

谢谢!谢谢 :-)

image matlab plot matlab-figure
3个回答
3
投票

试试下面的方法:一个单一的文件,包含四个函数。

function plotEverything()
  [x1 y1] = data1();
  [x2 y2] = data2();
  [x3 y3] = data3(0.5);
  figure
  plot(x1, y1);
  hold all;
  plot(x2, y2);
  plot(x3, y3);
  title 'my awesome plot of everything';
  xlabel 'X'; ylabel 'Y';
  legend({'one', 'two', 'three'});
end

function [x y] = data1()
  x = 1:5;
  y = 0.5 * x;
end

function [x y] = data2()
  x = 2:2:10;
  y = sqrt(x);
end

function [x y] = data3(p)
  x = linspace(0,7,15);
  y = 0.1 * rand(size(x)) + p * x.^2;
end

把它放在文件中 plotEverything.m,并在命令行中用 plotEverything. 不需要显式地清除任何变量--在任何函数中创建的任何东西都会在最后一个函数返回时消失,而由各个函数创建的任何东西(注意,我把所有的东西都称为 "变量")都会被清除。x, y - 是故意的)对其他函数是不可见的,因为它有本地范围。

现在代码已经组织好了--有一个函数专门用于绘图,还有一个函数用于生成数据,这些数据将被输入到每个绘图中。很明显,你的函数 data1 等会比我的复杂,但想法是一样的。


2
投票

你可以用这一行。

clearvars -except YourVariables

其中你的变量是你想保留的。


1
投票

我相信你在每个脚本之后都会清除你的变量,这意味着你不需要一个脚本的变量来运行另一个脚本。所以你可以使用这行

figure; %// a figure will open up
hold on;
call script 1
clear;
call script 2
clear;
call script 3;
clear;

Noe一开始打开的图会有所有的叠加图。

同时 保重 你的所有脚本都不应该调用 figure 命令(他们可以调用 plot 命令),否则将打开一个新的图形,并且不会叠加图形。

© www.soinside.com 2019 - 2024. All rights reserved.