龙空技术网

在Python 编程中使用 MatLAB 自定义函数

量化散兵线 86

前言:

今天看官们对“如何在matlab中安装函数”大体比较着重,看官们都需要知道一些“如何在matlab中安装函数”的相关知识。那么小编也在网络上搜集了一些对于“如何在matlab中安装函数””的相关文章,希望同学们能喜欢,看官们快快来学习一下吧!

本文介绍在Python编程中如何使用Matlab自定义函数的方法,实现两种语言混合编程,减少开发的工作量,仅作为抛砖引玉,和同行一起学习。

用Matlab定义一个函数

在matlab中定义一个函数,为方便起见,使用基本函数,能通过这个实例说明使用方法即可。

function [V,D] = eigFunc(A)	% 返回特征值D和特征向量V,D是一个对角矩阵	% V是与矩阵A的列相对应的特征向量, 	% 因此, A*V = V*D。	[V, D] = eig(A);end

把以上自定义函数名称为 eigFunc并保存,该函数以一个方形矩阵作为输入参数,输出两个值:V和D,其中D是特征值,是一个对角矩阵;V是与特征向量的列相对应的矩阵。

先看看在matlab中如何使用这个自定义函数,代码如下:

clear; close all; clcA = gallery('lehmer',4);[V,D] = eigFunc(A)

运行以上代码,返回结果如下:

V =    0.0693   -0.4422   -0.8105    0.3778   -0.3618    0.7420   -0.1877    0.5322    0.7694    0.0486    0.3010    0.5614   -0.5219   -0.5014    0.4662    0.5088D =    0.2078         0         0         0         0    0.4078         0         0         0         0    0.8482         0         0         0         0    2.5362

可以看到,该函数在Matlab中运行正确,自定义函数eigFunc只包括matlab的基本函数eig。

那如何在Python中使用 eigFunc 这个函数呢?下文接着讲述。

在Python中调用Matlab

python中使用matalb引擎接口 matlab.engine,这种方法相对容易,只需要安装matlab库就可以。安装matlab库的方法有两种:

方法1:从matlab中安装

cd (fullfile(matlabroot,'extern','engines','python'))system('python setup.py install')

方法2:直接安装,找到matlab安装目录,然后使用以下命令行命令:

python setup.py install

这里要注意,安装matlab enginer api接口与python的版本有关系。如果使用anaconda安装,可以检查到当前安装matlab engine api的python的版本,其他安装方法也有类似的情况。安装了matlab engine api之后,就可以在python中调用了,python中的调用代码如下:

import matlabimport matlab.engineeng = matlab.engine.start_matlab()A = [[1.0000,    0.5000,    0.3333,    0.2500],     [0.5000,    1.0000,    0.6667,    0.5000],     [0.3333,    0.6667,    1.0000,    0.7500],     [0.2500,    0.5000,    0.7500,    1.0000]]A = matlab.double(A)V, D = eng.eigFunc(A, nargout=2)print("V: ", V)print("D: ", D)eng.quit()

以上代码的运行结果如下:

V:  [[0.06939950784450351,-0.4421928183150595,-0.8104910184495989,0.37782737957175255],				[-0.3619020163563876,0.7419860358173743,-0.18770341448628555,0.5322133795757004],[0.7693553355549393,0.04873539080548356,0.30097912769034274,0.5613633351323756],[-0.5218266058004974,-0.5015447096377744,0.4661365700065611,0.5087893432606572]]D:  [[0.20775336892808516,0.0,0.0,0.0],[0.0,0.40783672775946245,0.0,0.0],[0.0,0.0,0.8482416513967358,0.0],[0.0,0.0,0.0,2.536168251915717]]

在python中的运行结果和前面在matlab中的运行结果一样。其中,“V, D = eng.eigFunc(A, nargout=2)”中的 argout参数是指基于matlab的函数输出两个结果值。

使用matlab compiler和matlab runtime创建python包

matlab打包界面如下图,

基本步骤:

在matlab中选择库编译器在弹出界面窗口中,填写与python库有关的信息选择要生成python库的matlab函数添加matlab自定义函数点击 “package” 按钮,生成独立的组件等待整个过程执行完毕安装matlab runtime

需要安装 matlab runtime 才能在python中使用上文中打包生成的库,只需要安装matlab runtime就可以,而无需安装matlab。mathwork公司提供了matlab runtime 免费下载。

python代码中,导入基于matlab的库,示例如下:

import eigFunceigFuncAnalyzer = eigFunc.initialize() #calls the matlab runtimeA = [[1.0000,    0.5000,    0.3333,    0.2500],     [0.5000,    1.0000,    0.6667,    0.5000],     [0.3333,    0.6667,    1.0000,    0.7500],     [0.2500,    0.5000,    0.7500,    1.0000]]A = array.array(A) %not testedV, D = eigFuncAnalyzer.eigFunc(A, nargout=2)print("V: ", V)print("D: ", D)eigFuncAnalyzer.terminate()

这里要注意,本文中的matlab自定义函数 eigFunc.m 只是导入matlab的mat格式的数据,可以使用 scipy.io.savemat 函数把python中的数据保存为matlab的mat格式。

(本文结束)

标签: #如何在matlab中安装函数