Java与MATLAB脚本互调:JS作为桥梁

1、问题的提出:

在一些web服务中,后台采用nodejs轻量化服务器接口,而matlab的.m文件编写了算法模块,两者调用时,官方没有提供相应的文档(当然也可能我没找到)。因此,本文提出了matlab的.m文件-python-nodejs的解决方案。

2、python调用matlab文件

java 调用matlab脚本 js调用matlab_开发语言

不同matlab版本支持不同python版本。本机采用matlab 2017b+python 3.5.6版本

①、(如果未安装python,请跳过此步骤)通过conda命令检测python



conda info --envs

java 调用matlab脚本 js调用matlab_动态库_02

我这个版本是3.9的,因此需要创建虚拟环境,安装3.5版本的python



conda create -n py3 python=3.5.6
:: 再次输入环境查询命令
conda info --envs

java 调用matlab脚本 js调用matlab_matlab_03

进入这个文件后,输入命令,即可激活环境



activate py3

进入matlab 2017b的  “..\extern\engines\python”环境,输入命令



Python setup.py install

java 调用matlab脚本 js调用matlab_开发语言_04

出现上图就是安装好了,然后将目录下新出现的文件夹“..\build\lib\matlab”移动到你虚拟环境下的“Lib\site-packages”,正常安装后,“Lib\site-packages”目录下会直接出现“matlab”文件夹

java 调用matlab脚本 js调用matlab_开发语言_05

②、pycharm 中新建python项目,并建立test.py文件,将matlab的.m文件拖入到同一目录下

③、复制代码,可以看到运行结果

java 调用matlab脚本 js调用matlab_matlab_06

!!!注意: 写代码的时候,如果采用nargout=0这个参数,如果.m文件内容为函数(无输出参数的函数),则会出现下图所示的没有返回值的情况,这个时候,我们仅仅需要给.m文件里的函数一个随意的输入变量即可保证python可以正常接收.m文件的返回值。

java 调用matlab脚本 js调用matlab_开发语言_07

!!!其次:matlab代码函数只能返回结构体数据,数据均被result包裹。

java 调用matlab脚本 js调用matlab_python_08

最后,如果出现“不受支持的 Python 数据类型: numpy.ndarray”问题,使用如下命令即可操作。matlab.double只能操作matlab.engine接口返回的列表数据,如果数据只有一个,则直接引用即可。

java 调用matlab脚本 js调用matlab_java 调用matlab脚本_09


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空