0
点赞
收藏
分享

微信扫一扫

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

✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。

🍎个人主页:算法工程师的学习日志

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

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

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

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

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

1、运行一个无参的脚本

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

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中写入下面代码

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代码从而实现批量运算结果_python_02

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 os
a = 1
b = 5
line = 'matlab -nodisplay -nodesktop -nosplash -r "a=' + "'" + str(a) + "';b=" + "'" + str(b) + "'" + ';add1"'
os.system(line)

输出结果为

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

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

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

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

改成如下的python代码

import os
a = 1
b = 5
line = 'matlab -nodisplay -nodesktop -nosplash -r "a=1;b=5;add1"'
os.system(line)

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

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

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

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)

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

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

举报

相关推荐

0 条评论