在 MATLAB 的终端仿真模式下打印透明图形

Posted

技术标签:

【中文标题】在 MATLAB 的终端仿真模式下打印透明图形【英文标题】:Printing a transparent figure in MATLAB's terminal emulation mode 【发布时间】:2012-10-21 23:47:42 【问题描述】:

有可能吗?下面的代码说明了我想要做什么:

xdata = [0 1 2];
ydata = [0 1 0];
h = patch(xdata,ydata,'w');
set(h, 'FaceAlpha', 0.2);
print -dpng myfig

如果我使用选项 -nodisplay 启动 MATLAB 并运行上面的代码,MATLAB 只会给我一个核心转储。我认为 MATLAB 的行为应该比没有进一步解释的崩溃好一点,但我知道这是因为 opengl 和 zbuffer 渲染器在终端仿真模式下都不可用。

我通过以.svg 格式绘制透明数字来解决这个问题,但这对我来说不是一个理想的解决方案。我的 MATLAB 脚本正在生成包含许多嵌入式图形的 html 报告,并且大多数浏览器在呈现包含多个(相对复杂的).svg 图像的页面时性能很差。那么,有人知道更好的解决方案吗?

【问题讨论】:

可能重复:***.com/questions/1853259/… @VictorHugo 不是真的。只要它们不包含任何透明元素,我就可以在终端模式下保存/打印不可见的图形。破坏 MATLAB 的是透明度问题,即如果您删除我代码中的第四行,一切正常。 【参考方案1】:

这个问题的间接解决方案是使用plot2svg()将透明图形打印到.svg文件,然后使用Inkscape将.svg文件转换为.png.pdf或任何其他Inkscape 支持的格式。 Inkscape 提供了相当不错的command line support,因此您可以轻松地从 MATLAB 编写整个过程的脚本。 Inkscape 适用于 Windows、Linux 和 Mac OS X。

【讨论】:

以上是关于在 MATLAB 的终端仿真模式下打印透明图形的主要内容,如果未能解决你的问题,请参考以下文章

超级干货:BPSK/QPSK数字调制系统误码率MATLAB仿真

基于matlab的通信仿真系统设计

三维建模基于MATLAB的立体图形三维建模仿真

MATLAB-simulink 的仿真实验中,怎样将仿真结果中的多个曲线,同时画出啊!

基于MATLAB GUI的电机特性分析

基于模糊神经网络的异构网络环境下垂直切换算法的matlab仿真与分析