从Matlab中更改DISPLAY变量

时间:2014-08-11 20:44:26

标签: matlab unix

我在Unix上的Matlab上远程运行一些代码,生成许多图表。我不希望在我的本地系统上弹出数百个数字。 (我怀疑窗口化进程也会减慢代码的执行速度。)我读到将DISPLAY环境变量设置为null会限制此行为,实际上,

$export DISPLAY=
$matlab14a -nodisplay -nosplash
>>X=1:10;
>>Y=X.^2;
>>plot(X,Y);

立即将光标返回控制台,不显示绘图。但是,我希望能够重新切换显示。我可以跑

>>setenv('DISPLAY',':1102') %Previous (correct) value of $DISPLAY
>>getenv('DISPLAY')
ans = 
:1102
>>plot(X,Y);

但是,情节仍然没有出现。我相信这是因为我的系统通过qrsh调度程序然后另一个子shell路由matlab实例。因此,当我更改我的DISPLAY变量时,我相信无论哪个shell都没有访问此变量。我不知道这个过程的具体细节。

我的问题是,一旦我将DISPLAY变量更改为正确值,我怎样才能让Matlab正确显示图?或者,是否还有其他解决方案可以切换所有绘图/图形的显示?

2 个答案:

答案 0 :(得分:2)

我认为运行带有-nodisplay标志的maltab会使它完全忽略所有数字,我认为你不能通过更改DISPLAY环境变量来恢复它。

您可以做的是将默认 'visible'属性设置为'off'

set( 0, 'DefaultFigureVisible', 'off');

在您的代码开始运行之前,只需将'visible'变为'on'即可查看您真正想要查看的数字。或者,在完成程序的主要计算部分后,将默认值重置为'on'

set( 0, 'DefaultFigureVisible', 'on');

有关设置属性默认值的详细信息,请参阅here

答案 1 :(得分:0)

例如,您需要将每个图形的句柄保存到数组中。然后,您可以使用命令set(h(index),'visible','on')