首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在python中运行MATLAB代码从而实现批量运算结果

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

作者头像
用户9925864
发布2023-09-05 19:22:15
发布2023-09-05 19:22:15
1.2K0
举报

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

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

类似这样可以正常在cmd调用到matlab就可,

python调用matlab服务通过os.system来实现

1、运行一个无参的脚本

假定保存一些变量到txt中,matlab代码如下

代码语言:javascript
复制
clc
close all
clear
%% 
a = 1;
b = 2;
c = a + b;
fp = fopen('data.txt','w');
fprintf(fp, '%d,%d,%d', [a b c]);
fclose(fp);

在python中写入下面代码

代码语言:javascript
复制
import os
# 下面命令就是调用.m文件命令格式
line = 'matlab -nodisplay -nodesktop -nosplash  -r test"'
os.system(line)

执行代码后,

代码语言:javascript
复制
C:\ProgramData\Anaconda3\python.exe D:\fun.py 

Process finished with exit code 0

此时可以发现生成一个data.txt文件

2、带入参的函数

假定一个matlab函数需要输入a和b,最终保存a b 和a+b的数值

代码语言:javascript
复制
c = a + b;
fp = fopen('data1.txt','w');
fprintf(fp, '%d,%d,%d', [a b c]);
fclose(fp);

此时python代码如下

代码语言:javascript
复制
import os
a = 1
b = 5
line = 'matlab -nodisplay -nodesktop -nosplash -r "a=' + "'" + str(a) + "';b=" + "'" + str(b) + "'" + ';add1"'
os.system(line)

输出结果为

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

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

改成如下的python代码

代码语言:javascript
复制
import os
a = 1
b = 5
line = 'matlab -nodisplay -nodesktop -nosplash -r "a=1;b=5;add1"'
os.system(line)

但这样改也没能实现a和b的变量输入,最终改成代码如下

代码语言:javascript
复制
import os
a = 1
b = 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)

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档