使用函数句柄在matlab中打印图形

时间:2016-08-07 09:51:21

标签: matlab matlab-figure

您好我想在Matlab中执行以下操作

假设我有一个绘制某些东西的函数

function # call 1
function # call 2
function # call 3
function # call 4

考虑到所有上述函数都将在matlab窗口中绘制一个图形。我怎样才能编写这样的函数,以便将图形保存在某处,然后我可以使用类似的东西 -

subplot(2,2,1), # plot for call 1
subplot(2,2,2), # plot for call 2
subplot(2,2,3), # plot for call 3
subplot(2,2,4), # plot for call 4

我不想将个别数字保存在内存中并再次加载它。

一个非常简单的功能是这样的:

x = linspace(0,2*pi,100);
y = sin(x);
xmarkers = 0:pi/2:2*pi; % place markers at these x-values
ymarkers = sin(xmarkers);
figure
plot(x,y,'b',xmarkers,ymarkers,'b*')

如果我多次调用它会产生多个数字,我想把它变成子图格式。

1 个答案:

答案 0 :(得分:2)

我创建了一个脚本myplot.m,它调用函数myfunction

fig_handle1 = figure;
gcf

fig_handle2 = figure;
plot(1:10);
gcf

myfunction( fig_handle1, 1 );
myfunction( fig_handle1, 4 );

它会创建两个数字,并将句柄存储在fig_handle1fig_handle2中。第一个图未使用,第二个图用于绘制斜坡。 gcf告诉您当前哪个数字处于活动状态。如您想要plotmyfunction中的第一个数字,您必须传递正确的数字句柄。第二个参数将告诉使用哪个子图:

函数myfunction.m的内容如下:

function myfunction(fig_handle, subplot_no)
    set(0,'CurrentFigure', fig_handle)

    x = linspace(0,2*pi,100);
    y = sin(x);
    xmarkers = 0:pi/2:2*pi; % place markers at these x-values
    ymarkers = sin(xmarkers);

    subplot(2, 2, subplot_no);
    plot(x,y,'b',xmarkers,ymarkers,'b*');
end

它使用set(0,'CurrentFigure', fig_handle)将当前数字设置为您的第一个数字,然后使用subplot(2, 2, subplot_no);选择您想要的子图。然后plot会吸引你的第一个数字。

从命令行调用myplot会得到以下结果:

Figures 1 and 2

使用调试功能逐步执行代码,看看会发生什么。