您好我想在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*')
如果我多次调用它会产生多个数字,我想把它变成子图格式。
答案 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_handle1
和fig_handle2
中。第一个图未使用,第二个图用于绘制斜坡。 gcf
告诉您当前哪个数字处于活动状态。如您想要plot
到myfunction
中的第一个数字,您必须传递正确的数字句柄。第二个参数将告诉使用哪个子图:
函数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
会得到以下结果:
使用调试功能逐步执行代码,看看会发生什么。