利用函数句柄在matlab中实现图形打印

利用函数句柄在matlab中实现图形打印,matlab,matlab-figure,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

嗨,我想在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*')

如果我多次调用此函数,它将生成多个图形,我希望将其转换为子绘图格式。

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

fig_handle1 = figure;
gcf

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

myfunction( fig_handle1, 1 );
myfunction( fig_handle1, 4 );
它创建两个图形并将句柄存储在
fig_handle1
fig_handle2
中。第一个图形不使用,第二个图形用于绘制坡道<代码>gcf告诉您当前哪个图形处于活动状态。当您想在
myfunction
plot
到第一个图形时,您必须传递正确的图形句柄。第二个参数将说明要使用的子批:

函数
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)
将当前图形设置为您的第一个图形,然后使用
子批次(2,2,子批次编号)
选择所需的子批次<代码>绘图将绘制到第一个图形

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


使用调试功能逐步完成代码并查看发生了什么。

您能显示这些函数吗?现在清楚了吗。请告诉我。否则我会进一步解释。你也可以阅读文档。那里没问题,谢谢。但是@patrik你能用答案的形式写下来吗?@roni给出的答案涵盖了大部分内容。它只是指向一些好文档的指针。由于图形是唯一的,因此它被视为一种资源。这意味着您必须将句柄保存在变量中。如果给出的答案没有帮助,您需要进一步解释问题。