中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 413查看
  • 0回复

[MATLAB] 在python中运行MATLAB代码从而实现批量运算结果

[复制链接]

该用户从未签到

发表于 26-8-2023 15:20:19 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在安装好python和matlab的电脑上,如果需要做一些流程化的内容,matlab这个方面不擅长,此时可以借助python来开发,

首先需要确保在cmd明年能够打开matlab

在python中运行MATLAB代码从而实现批量运算结果w1.jpg

类似这样可以正常在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文件

在python中运行MATLAB代码从而实现批量运算结果w2.jpg

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)
输出结果为

在python中运行MATLAB代码从而实现批量运算结果w3.jpg

在python中运行MATLAB代码从而实现批量运算结果w4.jpg

这个时候可以发现输出的结果和期望的不一致,这是因为在入参的时候把

a和b当成了字符,而非数字计算

改成如下的python代码

import osa = 1b = 5line = 'matlab -nodisplay -nodesktop -nosplash -r "a=1;b=5;add1"'os.system(line)
在python中运行MATLAB代码从而实现批量运算结果w5.jpg

在python中运行MATLAB代码从而实现批量运算结果w6.jpg

但这样改也没能实现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)
在python中运行MATLAB代码从而实现批量运算结果w7.jpg

其他更多的应用,欢迎大家交流

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 3-5-2024 07:03 , Processed in 0.272078 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.