【发布时间】:2021-12-27 02:30:51
【问题描述】:
设置:Emacs 27.2/Org-mode 9.5/Octave 6.4/Win10
我有一个 octave 源块,它调用 ODE45 函数对一些数据进行积分(见下文)。
+BEGIN_SRC octave :output results
%Times
tdat = 1:1:100;
% Initial Conditions
m0 =150000;g0 =1.51;V0=150;H0=1000;X0=0;
y0=[m0 H0 X0 V0 g0];
options = odeset('RelTol',1e-7,'AbsTol',1e-10*ones(1,5));
% Call ODE45
[t,y] = ode45('UseDyn',tdat,y0,options);
% plot and store chart.png
plot(y(:,3),y(:,2));
print -dpng chart.png;
ans = "chart.png"
#+END_SRC
它需要调用函数UseDyn.m,其中包含要被ODE45积分的初始数据和方程。
function [ydot]=UseDyn(t,y);
(four lines of equations)
end
我尝试了三种方式插入要处理的方程块:
- 它自己的源块在此之前。在主代码块之前执行。
- 在主代码之前进入主源代码块。作为一个大块执行。
- 在主代码之后进入主源代码块。
这些方法都不起作用。 Octave 没有看到所需的功能,也没有在源目录中创建为单独的文件。
我的 init 文件中的八度设置如下,org-babel 设置为 (octave t):
(require 'ob-octave)
(add-to-list 'load-path "c:/Users/xxxx/Octave/mingw64/bin")
谁能告诉我如何正确地从 octave 源块内部调用外部函数?我的 org-mode 设置是否不足?
【问题讨论】: