【发布时间】:2017-10-16 12:25:30
【问题描述】:
我有一个 issue.m 文件,它具有这样的功能:myfun(p,m)。
它进行一些计算并返回结果。为了测试这个函数的执行,我有一个如下所示的 test.m 文件。myfun(myarg1,myarg2)
如果我将此文件运行为:
octave test.m
然后它返回正确的结果,如下所示:0.38007
现在,问题是当使用 python 调用这个函数 myfun(p,m) 时。我尝试使用 python 库:oct2py
python 代码如下所示:
import sys
import subprocess
import oct2py
import requests
from oct2py import octave
def myfun(p,m):
octave.addpath('/mypath');
oc = oct2py.Oct2Py()
#res = octave.myfun(p,m nout=1);#this didn't work, hence comment
#res = oc.myfun(p, m) #this didn't work, hence comment
x = oc.feval("myfun",p,m);
print(x);
if __name__ == '__main__':
myfun(sys.argv[1],sys.argv[2])
当我将此代码运行为:python FileName.py arg1 arg2(我在 test.m 中使用的参数相同)时,它会给我一条警告消息和一个像这样的空列表:
警告:返回值列表中的某些元素未定义 []
我不知道该怎么做。由于该函数似乎在使用八度时以正确的格式返回正确的结果。但由于某种原因 oct2py 无法正常工作。
【问题讨论】:
-
您的 Octave 函数是实际返回输出还是只是将其打印到命令窗口?请参阅minimal reproducible example。
-
我的 octave 函数返回一个输出,正如我在 octave-cli 中看到的那样:octave:1> mytest timeBSeuCallUI = 2.6464e-04 1.5133e+00 NaN relerrBSeuCallUI = 2.7459e-05 6.2769 e-05 NaN ans = 2.6464e-04 octave:2> ans ans = 2.6464e-04
-
系统参数总是字符串。如果你需要整数输入,你应该首先将它们解析为整数