《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 18857|回复: 14
收起左侧

[教程] 【原创】Python中调用MATLAB方法

    [复制链接]
发表于 2011-12-4 19:56:16 | 显示全部楼层 |阅读模式
Python中调用MATLAB方法有很多,比如通过动态共享库dll、Python扩展包Pymat、COM自动化服务器等,具体参考附件。本文采用最简单的系统批处理命令形式调用MATLAB,该方法通用其它软件。下面是在Python中调用MATLAB命令或函数模板。
  1. #!/usr/bin/python
  2. #-*-coding:UTF-8-*-
  3. import os
  4. import string

  5. # 指定MATLAB安装根目录
  6. MatlabRoot="D:\\MATLAB\\R2011b"
  7. # 指定MATLAB函数文件的目录
  8. WorkPath="C:\Users\Dynamic\Documents\MATLAB"
  9. # 指定MATLAB运行日志文件
  10. LogFile="log.txt"
  11. # 希望MATLAB调用的函数命令
  12. TheFun="Python2Matlab('python')"

  13. # 构造MATLAB执行程序路径
  14. DosCmd=MatlabRoot + "\\bin\\matlab.exe"
  15. # 强迫Python等待MATLAB执行
  16. DosCmd=DosCmd + " -wait "
  17. # 将MATLAB仅仅作为计算服务器
  18. DosCmd=DosCmd + " -automation "
  19. # 指定MATLAB的工作目录
  20. DosCmd=DosCmd + " -sd " + WorkPath
  21. # 设置MATLAB运行日志文件
  22. DosCmd=DosCmd + " -logfile " + LogFile
  23. # 运行指定M函数
  24. DosCmd=DosCmd + " -r " + TheFun
  25. # 在Python中调用MATLAB
  26. os.system(DosCmd)
复制代码
Python调用MATLAB需要注意的几点是:

(1)Python运行时不会等待MATLAB执行,如果Python需要读取MATLAB的运行结果的话,那么必须指定“-wait”参数。此时必须在MATLAB程序最后添加 “exit”退出命令,才能将控制权重新转交给Python。不过退出之后MATLAB的相关窗口会全部关闭,所以建议使用“-wait”和“exit”参数时不要在MATLAB程序进行绘图等类似操作。

(2)提交给MATLAB的命令无论脚本还是函数,只要能够在MATLAB的Command Window中正确运行均可。但是一定要以字符的形式提交给MATLAB引擎。

(3)其它几个参数是非必要的,具体说明如下
-sd startdirctory        指定MATLAB启动目录,提交给MATLAB的命令中涉及到的所有函数都必须在启动目录或者搜索路径上,否则会调用失败,非必要参数。

-logfile logfiename        指定MATLAB程序运行信息或显示数据的输出文件,非必要参数,但是对程序调试很有意义

-automation        让MATLAB以计算服务器的形式在后台运行,非必须参数

Python与Matlab混合语言编程.pdf

264.59 KB, 下载次数: 3141, 下载积分: 贝壳 -1

评分

参与人数 3威望 +4 贝壳 +13 贡献 +5 收起 理由
vampireedward + 1 + 1
machreehappy + 2 + 5
rocwoods + 3 + 10 支持原创内容,鼓励自己动手

查看全部评分

发表于 2016-4-22 08:52:00 | 显示全部楼层
谢谢分享O(∩_∩)O~  
回复 支持 反对

使用道具 举报

发表于 2015-10-17 23:52:08 | 显示全部楼层
太好了,学习一个了,谢谢
回复 支持 反对

使用道具 举报

发表于 2011-12-4 20:06:03 | 显示全部楼层
校长的研究范围也很广啊
发表于 2011-12-4 20:39:13 | 显示全部楼层
赞一个!收藏了!
发表于 2011-12-4 22:46:40 | 显示全部楼层
貌似apache服务器的配置要用到这个python
发表于 2011-12-5 08:55:13 | 显示全部楼层
大家兴趣都很广泛,学习了!
 楼主| 发表于 2011-12-5 09:21:17 | 显示全部楼层
lijinfeng042 发表于 2011-12-4 20:06
校长的研究范围也很广啊

呵呵我使用的语言很多,使用的软件也很杂,只是MATLAB稍微用的好些。这次使用Python主要是因为我的毕业设计中使用Abaqus计算有限元,然后基于Python进行Abaqus二次开发。MATLAB、C/C++、Python、DOS、fortran等等很多语言都有涉及。。。
发表于 2011-12-5 10:28:13 | 显示全部楼层
dynamic 发表于 2011-12-5 09:21
呵呵我使用的语言很多,使用的软件也很杂,只是MATLAB稍微用的好些。这次使用Python主要是因为我的毕业设 ...

毕业设计又来了?哈哈
我习惯了C#和Matlab
发表于 2011-12-16 12:21:10 | 显示全部楼层
发表于 2012-8-13 13:16:47 | 显示全部楼层
好资料,学习啦
发表于 2012-10-31 09:57:43 | 显示全部楼层
学习啦,谢谢版主无私分享
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-11-27 11:29 , Processed in 0.066206 second(s), 18 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表