运行m文件后如何关闭GNU Octave,而又不关闭绘图窗口?

乔什·平托(Josh Pinto)

我一直在编写一个C ++程序来解决简单摆的问题,然后使用GNU Octave绘制结果。它在我的程序中通过以下行绘制结果:

system("./simppenadj.sh");

在哪里simppenadj.sh

#!/bin/sh
octave --no-gui --persist -q simppenadj.m

并且simppenadj.m是:

#!/usr/bin/octave
# Plotting simppenadj.txt
A      = importdata('simppenadj.txt');
B      = importdata('simppenadjdx.txt');
t      = A(:,1);
theta  = A(:,2);
dtheta = B(:,2);
figure
plot(t,theta)
xlabel('t','FontSize',16,'FontWeight','bold')
ylabel('\theta','FontSize',16,'FontWeight','bold')
title('{d^{2}\theta}/{d{t^{2}}} = -9.8 cos({\theta})','FontSize',18,'FontWeight','bold')
figure
plot(theta,dtheta)
xlabel('\theta','FontSize',16,'FontWeight','bold')
ylabel('d\theta/dt','FontSize',16,'FontWeight','bold')
title('{d^{2}\theta}/{d{t^{2}}} = -9.8 cos({\theta})','FontSize',18,'FontWeight','bold')

每当我运行C ++程序时,GNU Octave的CLI就会启动(并在末尾保持打开状态)并绘制数据。我不希望GNU Octave的CLI保持打开状态,但是我知道如何使其不打开的唯一方法是删除该--persist选项,simppenadj.sh选项也使GNU Octave生成的图不保持打开状态。这是一个问题,因为我希望在我的C ++程序运行后将这些图保留为打开状态。那么有没有办法做到这一点?

普舒尔茨

您可以使用八度音阶API从程序中调用脚本。在那里,创建一个子进程,该进程调用八度,因此父进程可以结束。这样,您可以保持八度运行。使用此方法,就没有八度音阶CLI,因为您通过API进行了所有对八度音阶的调用,尤其是feval

不幸的是,使用API​​的指南非常糟糕,但是我为您整理了一些应该可行的方法。它基本上只读取脚本并执行相应的功能。这是关于此方法的好处:您可以使用常规的八度音程函数/脚本文件方法编写所有内容。

printf在八度音阶文件中添加了该语句,以显示如何将参数传递给八度音阶。

main.cpp

#include <iostream>

#include <unistd.h>

#include <octave/oct.h>
#include <octave/octave.h>
#include <octave/parse.h>
#include <octave/toplev.h>

int main()
{
    pid_t pid = fork();

    if(pid != 0) // parent
    {
        std::cout << "parent, exiting\n";
    }
    else
    {
        // arguments for octave
        string_vector argv (2);
        argv(0) = "embedded";
        argv(1) = "-q"; // quiet

        // start octave, run embedded (third parameter == true)
        octave_main (2, argv.c_str_vec (), true);

        // read the script file
        source_file("calc_and_plot.m");

        // call the function with an argument
        octave_value_list in;
        in(0) = "Hello, world.";
        feval("calc_and_plot", in);


        std::cout << "octave (child process) done\n";
        clean_up_and_exit(0); // quit octave. This also quits the program,
                              // so use this together with atexit, if you 
                              // need to do something else after octave exits
    }

    return 0;
}

八度脚本/功能文件

function calc_and_plot(str)
    printf('%s\n', str);
    x = linspace(0, 2*pi, 100);
    y = sin(x);
    it = plot(y);
    waitfor(it);
end

用以下命令编译main.cpp

g++ main.cpp -L/usr/lib/octave-4.0.2 -I/usr/include/octave-4.0.2 -loctave -loctinterp

您必须调整系统和八度音阶版本的路径。您也可以使用该mkoctfile命令,该命令基本上是相同的。您可以查看其-p开关的输出,例如

mkoctfile -p CFLAGS

获取库,编译器标志等。有关此内容,请参见手册页。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何等待ThreadPoolExecutor中的所有任务在超时内完成而又不关闭Executor?

来自分类Dev

如何在超时时间内等待ThreadPoolExecutor中的所有任务完成而又不关闭Executor呢?

来自分类Dev

如何在特定时间后关闭蝙蝠而又不影响执行力?

来自分类Dev

运行并关闭后杀死文件

来自分类Dev

运行并关闭后杀死文件

来自分类Dev

打开文件后如何使批处理脚本不关闭

来自分类Dev

Windows 10:如何隐藏窗口而不关闭窗口?

来自分类Dev

点击不关闭WPF弹出窗口

来自分类Dev

提交jquery表单而不关闭窗口太早?

来自分类Dev

重新加载窗口而不关闭花式盒子

来自分类Dev

创建可刷新的tkinter窗口而不关闭

来自分类Dev

我想不关闭弹出窗口

来自分类Dev

pygame 播放后不关闭文件

来自分类Dev

录制后如何关闭文件?

来自分类Dev

Vim关闭窗口而不关闭缓冲区

来自分类Dev

每次测试后如何使网络驱动程序不关闭浏览器窗口?

来自分类Dev

如何在不关闭主窗口的情况下关闭Tkinter中的单个窗口?

来自分类Dev

在Python中关闭绘图窗口后如何设置绘图标题

来自分类Dev

主方法关闭后线程如何运行?

来自分类Dev

播放后如何运行cvlc关闭

来自分类Dev

创建文件后如何关闭文件

来自分类Dev

有没有办法关闭MacBook的盖子而又不让它睡觉呢?

来自分类Dev

传输文件后如何使Teracopy关闭其窗口?

来自分类Dev

关闭MDI父窗口的确认窗口而不关闭子窗口

来自分类Dev

如何在不关闭窗口的情况下关闭缓冲区?

来自分类Dev

如何在python中打开exe文件并继续运行而不关闭exe文件?

来自分类Dev

Microsoft Office 2016关闭后如何运行批处理文件

来自分类Dev

Kafka Streams-抑制直到窗口结束(不关闭)

来自分类Dev

在不关闭 Tkinter 窗口的情况下退出 python 程序

Related 相关文章

  1. 1

    如何等待ThreadPoolExecutor中的所有任务在超时内完成而又不关闭Executor?

  2. 2

    如何在超时时间内等待ThreadPoolExecutor中的所有任务完成而又不关闭Executor呢?

  3. 3

    如何在特定时间后关闭蝙蝠而又不影响执行力?

  4. 4

    运行并关闭后杀死文件

  5. 5

    运行并关闭后杀死文件

  6. 6

    打开文件后如何使批处理脚本不关闭

  7. 7

    Windows 10:如何隐藏窗口而不关闭窗口?

  8. 8

    点击不关闭WPF弹出窗口

  9. 9

    提交jquery表单而不关闭窗口太早?

  10. 10

    重新加载窗口而不关闭花式盒子

  11. 11

    创建可刷新的tkinter窗口而不关闭

  12. 12

    我想不关闭弹出窗口

  13. 13

    pygame 播放后不关闭文件

  14. 14

    录制后如何关闭文件?

  15. 15

    Vim关闭窗口而不关闭缓冲区

  16. 16

    每次测试后如何使网络驱动程序不关闭浏览器窗口?

  17. 17

    如何在不关闭主窗口的情况下关闭Tkinter中的单个窗口?

  18. 18

    在Python中关闭绘图窗口后如何设置绘图标题

  19. 19

    主方法关闭后线程如何运行?

  20. 20

    播放后如何运行cvlc关闭

  21. 21

    创建文件后如何关闭文件

  22. 22

    有没有办法关闭MacBook的盖子而又不让它睡觉呢?

  23. 23

    传输文件后如何使Teracopy关闭其窗口?

  24. 24

    关闭MDI父窗口的确认窗口而不关闭子窗口

  25. 25

    如何在不关闭窗口的情况下关闭缓冲区?

  26. 26

    如何在python中打开exe文件并继续运行而不关闭exe文件?

  27. 27

    Microsoft Office 2016关闭后如何运行批处理文件

  28. 28

    Kafka Streams-抑制直到窗口结束(不关闭)

  29. 29

    在不关闭 Tkinter 窗口的情况下退出 python 程序

热门标签

归档