-2
我有一個有這樣的功能的problem.m文件:myfun(p,m)
。如何從python調用octave函數?
它做了一些計算並返回結果。爲了測試這個函數的執行情況,我有一個如下所示的test.m文件。
myfun(myarg1,myarg2)
如果我運行此文件爲: octave test.m
然後返回我正確的結果看起來像這樣:0.38007
現在的問題是調用使用此功能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])
當我運行此代碼:蟒蛇FileName.py ARG1 ARG2(相同的論點我test.m使用)它給了我一個警告消息,並且空單是這樣的:
警告:在返回值的列表中的一些元素是未定義 []
我不知道該怎麼做。由於該功能似乎在使用八度時以正確的格式返回正確的結果。但由於某些原因,oct2py不起作用。
您的Octave函數是否實際返回一個輸出,還是僅僅將它打印到命令窗口?請參閱[mcve]。 – excaza
我的八度函數返回一個輸出,如我可以看到在ANS倍頻-CLI這樣的:八度:1> mytest的 timeBSeuCallUI = 2.6464e-04 1.5133e + 00 的NaN relerrBSeuCallUI = 2.7459e -05 6.2769e-05 的NaN ANS = 2.6464e-04 八度:2> ANS ANS = 2.6464e-04 – STZ
系統參數總是字符串。如果你需要整數輸入,你應該首先將它們解析爲整數 –