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)));