【问题标题】:Getting octave to plot when invoking a function from the command line从命令行调用函数时绘制八度音阶
【发布时间】:2011-10-14 03:42:59
【问题描述】:

我正在尝试从命令行运行octave 中的函数。该函数当前运行如下:

octave --silent --persist --eval 'function(input arguments)'

function.m 包含一个plot 命令。当我使用上述命令行参数调用octave 时,绘图确实显示,但八度音程进入其交互模式。我的问题是:

当从命令行调用它时,有没有办法让 octave 显示绘图 进入交互模式?

【问题讨论】:

  • 其他选项也可以查看this

标签: plot octave


【解决方案1】:

AFAIK,绘图窗口是 octave 的子进程,因此只能在 octave 运行时显示。即使您从“交互式”模式中绘制某些内容,让绘图打开和关闭八度音程,绘图也会消失。
您可以做的是绘制一些输出文件,例如发布的here:

f = figure
set(f, "visible", "off")
plot([1,2,3,4])
print("MyPNG.png", "-dpng")

【讨论】:

  • 所以你是说没有进入交互模式就无法显示情节?
  • @Sriram 据我所知,没有办法。但我还没有找到任何明确说明...
【解决方案2】:

问题是当你从命令行运行时,当它结束时,绘图窗口随之消失。

#! /usr/bin/octave -qf
f = figure;
set(f, "visible", "off")

t=0:0.001:5*pi;
plot(t, sin(5*t)), grid

print("MyPNG.png", "-dpng")

这会将输出保存到运行它的目录中的 MyPNG.png。

然后你可以用可视化程序打开它。

另一种选择是添加

pause

在程序结束时等待用户输入终止,从而关闭绘图窗口。

干杯:)

【讨论】:

    【解决方案3】:

    在你的绘图函数之后使用pause

    【讨论】:

    • 这是一个绝妙的技巧,可以在运行进一步的指令(这可能会使查看变得困难)之前,为程序提供提示和时间来可视化图形中的绘图指令。我使用了变体pause(N),其中 N 是等待的秒数:在我的例子中,0.1 完美地达到了目的,
    【解决方案4】:

    您需要选择合适的图形工具包:

    available_graphics_toolkits 
    ans = 
    {
      [1,1] = fltk
      [1,2] = gnuplot
    }
    

    默认是fltk,它不能在不显示绘图的情况下写入文件。但是,如果您选择gnuplot,它将能够写入文件而无需先显示它。在您的文件中以:

    开头
    graphics_toolkit gnuplot
    

    【讨论】:

      【解决方案5】:

      你可以使用:

      waitfor(h)
      

      最后,等你合图。

      【讨论】:

      • 这应该是一个实际的答案。 "waitfor(figure)" 将等待脚本执行,直到绘图窗口关闭,因此 octave 进程将保持活动状态。
      【解决方案6】:

      也可以试试wait key。

      while (waitforbuttonpress ()==0) 暂停(1) 结束

      【讨论】:

      • 嗨,这篇文章似乎没有为这个问题提供quality answer。请编辑您的答案并改进它,或者将其作为对问题/其他答案的评论发布。
      猜你喜欢
      • 2014-11-06
      • 2012-01-05
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 2012-09-27
      • 1970-01-01
      相关资源
      最近更新 更多