【问题标题】:Change DISPLAY variable from within Matlab从 Matlab 中更改 DISPLAY 变量
【发布时间】:2014-08-11 20:44:25
【问题描述】:

我在 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 调度程序路由 matlab 实例,然后是另一个子 shell。所以当我改变我的 DISPLAY 变量时,我相信无论哪个 shell 都没有访问这个变量。我不知道这个过程的具体细节。

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

【问题讨论】:

  • 也许您可以使用 ('Visible','off') 选项绘制图形并稍后切换到可见?
  • @zinjaai 这绝对是一种可能性。但我希望有另一种方法可以做到这一点,因为绘图代码深埋在我的代码库中,我想避免更改它。

标签: matlab unix


【解决方案1】:

我认为使用 -nodisplay 标志运行 maltab 会使其完全忽略所有数字,我认为您无法通过更改 DISPLAY 环境变量来恢复。

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

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

在您的代码开始运行之前,只将'visible' 转换为'on' 以获得您真正想看到的数字。或者,在您完成程序的主要计算部分后,将默认值重置为 'on'

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多