使用透明图时,同一图中的不同图表

时间:2014-06-27 11:41:26

标签: image matlab plot clear matlab-figure

我有3个.m文件,每个文件都有一个图表。我需要叠加其中三个的结果,所以我做的是将三个代码复制到一个.m文件中。

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

任何人都有关于如何在一个数字中绘制三个结果的任何建议吗?

谢谢! : - )

3 个答案:

答案 0 :(得分: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,{{1} < - 故意)对于其他函数是不可见的,因为它具有局部范围。

现在代码已经组织好了 - 有一个仅用于绘图的函数,以及一个用于生成进入每个图的数据的函数。显然你的函数y等会比我的更复杂,但想法是一样的。

答案 1 :(得分:2)

您可以使用以下行:

clearvars -except YourVariables

其中YourVariables是您要保留的。

答案 2 :(得分:1)

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

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

Noe在开始时打开的数字将包含所有叠加图。

同样注意您的脚本都不应该调用figure命令(他们可以调用plot命令),否则会打开一个新的数字并且不会显示绘图叠加