MATLAB编程-简介
图形句柄(Figure handles)
图形(figure)本质上是一个窗口,用于容纳一个或多个图像、用户界面控件(uicontrols)等内容。它是你能创建的第二高级别的图形对象。
创建图形
使用 figure
函数可以创建图形窗口,例如:
>> fhandle = figure;
这会新建一个图形窗口,并将图形的所有数据存储在变量 fhandle
中。你也可以在创建图形的同时为其设置多个属性,语法如下:
>> fhandle = figure('Propertyname1', value1, 'Propertyname2', value2, ...);
有效的属性名称和含义请参见文档中的 figure properties 页面。
关闭图形
你可以使用 close
函数以编程方式关闭图形并销毁其句柄:
>> close(fhandle);
注意:
如果你通过 close
函数或点击图形窗口右上角的 “X” 关闭图形,那么该图形的数据将无法再访问,尝试访问将引发错误。关闭图形也会销毁其下所有坐标轴和注释对象的句柄。
get 和 set 函数
MATLAB 允许你通过 get
函数获取图形句柄(或其他图形句柄,如坐标轴、线条、文本等)的任何属性。例如:
>> h = figure;
>> propvar = get(h, 'Propertyname');
这会将名为 'Propertyname'
的属性值存入变量 propvar
。get
一次只能获取一个属性。
使用 set
函数可以设置任意多个属性。例如:
>> set(h, 'Propname1', propval1, 'Propname2', propval2, ...);
你也可以为多个句柄设置相同的属性值,只需先创建一个句柄数组:
>> handlevec(1) = figure;
>> handlevec(2) = figure;
>> set(handlevec, 'Name', 'Figure window');
这将创建两个新图形窗口,并都命名为 'Figure window'
。
图形属性名称和取值格式请参考官方文档。
gcf
即使你没有将图形赋值给变量,也可以通过 MATLAB 的内置变量 gcf
访问当前图形。这主要是为了方便使用,避免在函数之间传递图形句柄。但由于以下警告,使用 gcf
时必须特别小心,尤其在有多个图形同时打开的情况下:
当前图形是最近被修改的图形,而不一定是当前打开的图形。
要查看当前图形的所有属性:
>> get(gcf)
也可以获取或设置某个具体属性:
>> get(gcf, 'propertyname');
>> set(gcf, 'propertyname', value);
有关属性名称和取值格式,请参见文档中的 figure property 页面。
保存图形内容
要保存整个图形的内容,可使用 saveas
函数:
>> saveas(fhandle, 'X.fig');
这将图形保存为 .fig
文件,之后可以手动打开并编辑。不过,使用程序重新加载和一致性编辑 .fig
文件可能会比较麻烦。
saveas
也支持保存为 .jpg
、.tif
、.bmp
、.png
等图像格式。它等效于图形窗口中的“文件 --> 另存为...”功能,但可能在分辨率上略有差异。无论是用哪种方式保存图像,生成的图像质量往往不足以用于正式出版。
生成高质量图像
如果需要高质量图像,可以使用 MATLAB 的 print
函数将图像保存为矢量格式(例如使用 -dill
参数生成 Adobe Illustrator 格式),或指定分辨率的栅格图像格式(例如使用 -dpng
和 -r300
参数保存为 300dpi 的 PNG 图像)。有关支持的输出格式,请参阅 print
函数的文档。
作为 print
的替代方式,可以使用 MATLAB 用户社区中的 plot2svg
函数将图形导出为 SVG 文件(不仅限于 Simulink 模型)。SVG 文件可以使用 Inkscape 等免费工具编辑,也可以在 Illustrator 中打开。