公众号手机端

matlab定义函数 (matlab定义函数function)

zhiyongz 4个月前 (09-08) 阅读数 55 #生活经验

本文介绍在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.53220.7694 0.0486 0.3010 0.5614-0.5219 -0.5014 0.4662 0.5088D =0.2078 0 0 00 0.4078 0 00 0 0.8482 00 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_matlabA = [[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.s *** emat 函数把python中的数据保存为matlab的mat格式。

(本文结束)

版权声明

本文仅代表作者观点,不代表本站立场。
如有侵权,请留言联系我们删除,感谢。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门