1. 安裝
首先,需要安裝MATLAB引擎。Windows cmd打開,cd到:E:\MATLAB\R2016b\extern\engines\python
輸入(linux同理):
python setup.py install
2.確保編輯器為本地環境,試驗 import matlab.engine 是否可用
3.matlab中寫方程
安裝完成后,MATLAB寫一個簡單的函數
function x=myLS(A,B)
x = A\B;
end
隨后,打開 Python, 運行如下命令
import matlab.engine
eng = matlab.engine.start_matlab()
y = eng.myLS(matlab.double([[1.],[2.]]),matlab.double([[3.],[4.]]))
print y
4.但此時意識到一個問題:多維np矩陣傳遞無法轉化為matlab.double
報錯 ValueError: initializer must be a rectangular nested sequence
matlab官方論壇建議:
python里面 put numpy.ndarry into a list:
data_list = data.tolist()
或者
data_list= matlab.double(data_list.tolist())
MATLAB 里面:
a = [data_list{:}];
x = cell2mat(a);
y = double(reshape(x,32,32));
或者:
data_list = double(reshape(data_list,length(data_list),length(data_list)));