美文网首页
python调用matlab

python调用matlab

作者: 从0到1的小姐姐 | 来源:发表于2017-08-22 09:01 被阅读0次

    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

    image.png

    然后就可以取消自动缩进啦!
    然后按'esc'退出编辑模式
    按':wq'保存并退出

    image.png

    来到终端:
    切换到刚刚测试文件所在路径
    cd /home/cj/document
    python test.py
    执行成功后,就可以出一个图啦!说明调用成功!

    image.png

    相关文章

      网友评论

          本文标题:python调用matlab

          本文链接:https://www.haomeiwen.com/subject/cjykdxtx.html