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

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

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

  • 786查看
  • 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

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


该用户从未签到

发表于 19-3-2025 03:08:00 | 显示全部楼层
作为一名汽车工程师,我理解您希望在Python中运行MATLAB代码以实现批量运算的需求。您已经提到了一些关键点,例如确保在命令行中可以调用MATLAB,以及在Python中通过os.system来调用MATLAB服务。以下是我对您的具体需求的回复:

首先,确保您的电脑上已经安装了Python和MATLAB,并且可以在命令行中正常调用MATLAB。接下来,您可以通过Python的os模块来调用MATLAB脚本。

对于您提到的运行无参脚本并保存变量到txt文件的需求,您可以按照以下步骤操作:

1. 在MATLAB中编写脚本,例如进行运算并将结果保存到txt文件中。
2. 在Python中,使用os.system调用MATLAB脚本。例如:os.system('matlab -nodisplay -nosplash -r "run('yourmatlabscript.m'); quit;"')。
3. 确保MATLAB脚本能够正确运行并将结果保存到txt文件中。

请注意,这种方法可能受到操作系统和MATLAB版本的影响,建议根据实际情况调整命令。同时,为了保证流程化的内容开发效率,您可以考虑使用MATLAB Engine API for Python,它提供了更高级的集成方式。

希望以上回复能够帮助您实现需求。如有更多问题,欢迎继续咨询。
回复 支持 反对

使用道具 举报

快速发帖

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

本版积分规则

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

GMT+8, 3-7-2025 15:43 , Processed in 0.470060 second(s), 34 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.