1.首先需要安装好matlab
确保在matlab的安装路径下/usr/local/MATLAB/R2016a/
有/extern/engines/python
这个文件夹,有了这个文件夹才能安装python调用matlab的engine
2.调用
打开matlab安装目录
cd /usr/local/MATLAB/R2016a/extern/engines/python
执行安装
python setup.py install
如果提示权限有问题,请切换到管理员权限
3.测试
在你的目录下新建一个测试文件,例如
cd /home/cj/document
vim test.py
然后按'i'进入编辑模式
粘贴以下测试脚本
import matlab
import matlab.engine
import time
def basic_test(eng):
print "Basic Testing Begin"
print "eng.power(100,2) = %d"%eng.power(100,2)
print "eng.max(100,200) = %d"%eng.max(100,200)
print "eng.rand(5,5) = "
print eng.rand(5,5)
print "eng.randi(matlab.double([1,100]),matlab.double([3,4]))"%\
eng.randi(matlab.double([1,100]),matlab.double([3,4]))
print "Basic Testing Begin"
def plot_test(eng):
print "Plot Testing Begin"
eng.workspace['data'] = \
eng.randi(matlab.double([1,100]),matlab.double([30,2]))
eng.eval("plot(data(:,1),'ro-')")
eng.hold('on',nargout=0)
eng.eval("plot(data(:,2),'bx--')")
print "Plot testing end"
def audio_test(eng,freq,length):
print "Audio Testing Begin"
eval_str = "f = %d;t=%d;"%(freq,length)
eng.eval(eval_str,nargout = 0)
eng.eval('fs = 44100;T=1/fs;t=(0:T:t);',nargout = 0)
eng.eval('y = sin(2 * pi * f * t);',nargout = 0)
eng.eval('sound(y,fs);',nargout = 0)
time.sleep(length)
print "Audio Testing End"
def fourier_test(eng):
pass
def demo(eng):
basic_test(eng)
plot_test(eng)
audio_test(eng,680,1)
if __name__ == "__main__":
print "Initializing Matlab Engine"
eng = matlab.engine.start_matlab()
print "Initializing Complete!"
demo(eng)
print "Exiting Matlab Engine"
print "Press Any Key to Exit"
raw_input();
eng.quit()
print "Bye-Bye"
如果粘贴过程中自动缩进了的话要注意,不然一会儿执行就会报错,避免让其自动缩进的方法是
在粘贴数据之前,输入下面指定开启paste模式
:set paste
粘贴完毕后,输入下面指定关闭paste模式
:set nopaste
然后就可以取消自动缩进啦!
然后按'esc'退出编辑模式
按':wq'保存并退出
来到终端:
切换到刚刚测试文件所在路径
cd /home/cj/document
python test.py
执行成功后,就可以出一个图啦!说明调用成功!