2017-07-27 28 views
1

我在計算HOG特徵描述符倍頻,然後我試圖使用scikit學習的Python集羣這些數據將數據傳遞給蟒蛇。 用於測試我的代碼Python我想通過一個4000x2的數據到Python。 我從調用的Python腳本倍頻使用不是可以從八度通過命令行參數

system('python filename.py data')

,然後嘗試使用

sys.argv

來獲取數據,但我得到的第二個參數是一個字符串'data'而不是我通過的4000x2數據Octave

我應該怎麼做,這樣我可以在的Python得到原始數據,而不僅僅是字符串「數據」

+1

我不知道八度,但可能是因爲你使用的是單引號''python filename.py data''系統函數將它作爲一個字符串。我不知道你我可以傳遞給系統,像'system('python filename.py'+ data)'你需要告訴'系統''data'是一個變量,而不是一個字符串。 – fvidalmolina

+2

你也可以考慮從你的八度腳本(https://octave.sourceforge.io/octave/function/csvwrite.html)以csv這樣的通用格式將數據寫入文件,然後從你的python腳本訪問它。 – voidpointercast

+0

@fvidalmolina你說的方法不工作,因爲python試圖將數據連接成字符串'python filename.py' – Siladittya

回答

1

有一個python命令內置八度。 或者,我將保存爲.mat文件,並使用scipy.io.loadmat在您的Python腳本中打開此文件。

還有eval_pypython_cmdsymbolic package,但我不確定這是否適合您的特定用例。最一般的,matlab兼容的,推薦的方法是.mat

+0

寫入'.mat'文件並通過'scipy.io.loadmat'進行讀取 – Siladittya

+0

但我沒有得到'python'命令的工作方式。 我使用此代碼 '蟒蛇(「filename.py」,數據)' 但我得到的錯誤 '錯誤:蟒蛇:無效的參數 錯誤:在第48行列從 蟒蛇叫5' – Siladittya

+1

據我所知,'python'命令的工作方式就像從終端調用'python arg1 arg2 arg4 etc'一樣。因此,您的參數需要是字符串,並且您可以從python腳本內部適當地處理它們,就像從終端調用python腳本一樣。最好堅持'.mat'文件。在Python和八度之間進行通信的Fancier接口(例如oct2py)使用引擎蓋下的套接字來實現字節數據傳輸。 –

1

我不是關於倍頻的專家,但答案很可能是類似即:

command=sprintf("python filename.py %s",data) 
system(command) 

請注意,在大多數操作系統中命令行參數的數量是有限的。

+0

我嘗試使用'sys.argv'獲取參數並嘗試使用您建議的方法在python中打印數據。但它只是打印字符串'python filename.py'多次作爲列表,如 '['filename.py','python','filename.py','python','filename.py','python ','filename.py']' – Siladittya

+0

將命令打印到控制檯時,八度顯示什麼?你能提供你的python腳本的主要部分嗎? – voidpointercast