1、问题的提出:
在一些web服务中,后台采用nodejs轻量化服务器接口,而matlab的.m文件编写了算法模块,两者调用时,官方没有提供相应的文档(当然也可能我没找到)。因此,本文提出了matlab的.m文件-python-nodejs的解决方案。
2、python调用matlab文件
不同matlab版本支持不同python版本。本机采用matlab 2017b+python 3.5.6版本
①、(如果未安装python,请跳过此步骤)通过conda命令检测python
conda info --envs
我这个版本是3.9的,因此需要创建虚拟环境,安装3.5版本的python
conda create -n py3 python=3.5.6
:: 再次输入环境查询命令
conda info --envs
进入这个文件后,输入命令,即可激活环境
activate py3
进入matlab 2017b的 “..\extern\engines\python”环境,输入命令
Python setup.py install
出现上图就是安装好了,然后将目录下新出现的文件夹“..\build\lib\matlab”移动到你虚拟环境下的“Lib\site-packages”,正常安装后,“Lib\site-packages”目录下会直接出现“matlab”文件夹
②、pycharm 中新建python项目,并建立test.py文件,将matlab的.m文件拖入到同一目录下
③、复制代码,可以看到运行结果
!!!注意: 写代码的时候,如果采用nargout=0这个参数,如果.m文件内容为函数(无输出参数的函数),则会出现下图所示的没有返回值的情况,这个时候,我们仅仅需要给.m文件里的函数一个随意的输入变量即可保证python可以正常接收.m文件的返回值。
!!!其次:matlab代码函数只能返回结构体数据,数据均被result包裹。
最后,如果出现“不受支持的 Python 数据类型: numpy.ndarray”问题,使用如下命令即可操作。matlab.double只能操作matlab.engine接口返回的列表数据,如果数据只有一个,则直接引用即可。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删