|
汽车零部件采购、销售通信录 填写你的培训需求,我们帮你找 招募汽车专业培训老师
在安装好python和matlab的电脑上,如果需要做一些流程化的内容,matlab这个方面不擅长,此时可以借助python来开发,
首先需要确保在cmd明年能够打开matlab
类似这样可以正常在cmd调用到matlab就可,
python调用matlab服务通过os.system来实现
1、运行一个无参的脚本
假定保存一些变量到txt中,matlab代码如下
clcclose allclear%% a = 1;b = 2;c = a + b;fp = fopen('data.txt','w');fprintf(fp, '%d,%d,%d', [a b c]);fclose(fp);
在python中写入下面代码
import os# 下面命令就是调用.m文件命令格式line = 'matlab -nodisplay -nodesktop -nosplash -r test"'os.system(line)
执行代码后,
C:\ProgramData\Anaconda3\python.exe D:\fun.py
Process finished with exit code 0
此时可以发现生成一个data.txt文件
2、带入参的函数
假定一个matlab函数需要输入a和b,最终保存a b 和a+b的数值
c = a + b;fp = fopen('data1.txt','w');fprintf(fp, '%d,%d,%d', [a b c]);fclose(fp);
此时python代码如下
import osa = 1b = 5line = 'matlab -nodisplay -nodesktop -nosplash -r "a=' + "'" + str(a) + "';b=" + "'" + str(b) + "'" + ';add1"'os.system(line)
输出结果为
这个时候可以发现输出的结果和期望的不一致,这是因为在入参的时候把
a和b当成了字符,而非数字计算
改成如下的python代码
import osa = 1b = 5line = 'matlab -nodisplay -nodesktop -nosplash -r "a=1;b=5;add1"'os.system(line)
但这样改也没能实现a和b的变量输入,最终改成代码如下
import osa = 1b = 5# line = 'matlab -nodisplay -nodesktop -nosplash -r "a=1;b=5;add1"'line = 'matlab -nodisplay -nodesktop -nosplash -r "a='+str(a)+';b='+str(b)+';add1"'os.system(line)
其他更多的应用,欢迎大家交流 |
|