Plot 从命令行调用函数时获取要绘制的倍频程

Plot 从命令行调用函数时获取要绘制的倍频程,plot,octave,Plot,Octave,我正试图从命令行运行八度音阶的函数。该函数当前按如下方式运行: octave--silent--persist--eval'函数(输入参数) function.m包含一个plot命令。当我使用上述命令行参数调用octave时,绘图确实显示,但octave进入其交互模式。我的问题是: 当从命令行调用时,有没有办法让倍频程显示绘图而不进入交互模式?好的,绘图窗口是倍频程的子进程,因此只能在倍频程运行时显示。即使您在“交互”模式下绘制某些内容,并使绘图打开和关闭倍频程,绘图也将消失。 您可以做的是打印

我正试图从命令行运行八度音阶的函数。该函数当前按如下方式运行:

octave--silent--persist--eval'函数(输入参数)

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


当从命令行调用时,有没有办法让倍频程显示绘图而不进入交互模式?

好的,绘图窗口是倍频程的子进程,因此只能在倍频程运行时显示。即使您在“交互”模式下绘制某些内容,并使绘图打开和关闭倍频程,绘图也将消失。
您可以做的是打印到一些输出文件,如posted:


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

#! /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
在程序结束时,等待用户输入终止,从而关闭绘图窗口


干杯:)

打印功能完成后,只需使用
暂停
即可

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

available_graphics_toolkits 
ans = 
{
  [1,1] = fltk
  [1,2] = gnuplot
}
默认值为
fltk
,在不显示绘图的情况下无法写入文件。但是,如果您选择
gnuplot
,它将能够写入文件而不首先显示它。在您的文件中,以以下开头:

graphics_toolkit gnuplot
您可以使用:

waitfor(h)

最后,它将等待您关闭图形。

也可以尝试等待键

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

那么你是说如果不进入交互模式,就无法显示情节?@Sriram据我所知,没有办法。但我没有发现任何文档清楚地说明……这是一个很好的技巧,可以在遇到进一步的指令(这可能会使查看变得困难)之前,为程序提供在图形中可视化绘图指令的提示和时间。我使用了变量
pause(N)
,其中N是等待的秒数:在我的例子中,0.1完全达到了目的,这应该是一个实际的答案。“waitfor(figure)”将等待脚本的执行,直到绘图窗口关闭,因此倍频程进程将保持活动状态。其他选项也可以查看。您好,这篇文章似乎并没有为这个问题提供答案。请编辑您的答案并加以改进,或者将其作为对问题/其他答案的评论发布。
waitfor(h)