在MATLAB环境下访问外部函数的共享库文件 精品资料

在MATLAB环境下访问外部函数的共享库文件 精品资料

ID:22684004

大小:97.50 KB

页数:21页

发布时间:2023-10-19 00:53:02

资源描述:

在MATLAB环境下访问外部函数的共享库文件,必须首先把该库文件加载到内存中。一旦加载成功,就能直接在MATLAB中直接请求关于函数的任何信息。而当不再需要该库时,就应当及时把库文件从内存中卸载以节省内存开销。加载库语法:loadlibrary(‘shrlib’,’hfile’)其中shrlib为加载的动态链接库文件名(filename.dll),hfile为头文件名,它包含函数原型。例如,当加载包含MATLAB中mx程序的libmx库时,可以使用下列语句。hfile=[matlabroot’externinclu|dematrix.h’];loadlibray(‘libmx’,hfile)卸载库语法:unloadlibrarylibmx使用两个函数可以获取加载库的信息:libfunctions(‘libname’)orlibfunctionslibnamelibfunctionsview(‘libname’)orlibfunctionsviewlibname这两个函数的不同之处在于显示结果的方式不同,后者是以图形的方式显示在新的窗口中。而前者返回库libmx中有哪些可用的函数。请看示例:libfunctionslibmxMet|hodsforclasslib.libmx:mxAddFieldmxGetFieldNumbermxIsLogicalScalarTruemxArrayToStringmxGetImagDatamxIsNaNmxCalcSingleSubscriptmxGetInfmxIsNumericmxCallocmxGetIrmxIsObjectmxClearScalarDoubleFlagmxGetJcmxIsOpaquemxCreateCellArraymxGetLogicalsmxIsScalarDoubleFlagSet|如果加上命令开头-full,则可以显示函数返回值的细节。libfunctionslibmx-fullMethodsforclasslib.libmx:[mxClassID,MATLABarray]mxGetClassID(MATLABarray)[lib.pointer,MATLABarray]mxGetData(MATLABarray)[MATLABarray,voidPtr]mxSetData(MATLABarray,voidPtr)[lib.pointer,MATLABarray]mxGetPr(MATLABar|ray)[MATLABarray,doublePtr]mxSetPr(MATLABarray,doublePtr)uint8mxIsFinite(double)uint8mxIsInf(double)值得注意的是,这两个函数返回值的类型均是MATLAB的数据类型,虽然函数是利用C语言编写的。调用库函数一旦库函数被加载到了内存空间,只要指定库名、函数名和变量就可以使用calllib函数调用库中的任何函数了。语法格式:calllib(‘libname’,’funcname’,arg1,…,argn)下列语句显示如何操作:h|file=['C:MATLAB7externincludematrix.h'];

1loadlibrary(‘libmx’,hfile);y=rand(4,7,2);%producea3Darray,thereare56elementsinitcalllib(‘libmx’,’mxGetNumberOfElements’,y)ans=56Calllib(‘libmx’,’mxGetClassID’,y)ans=mxDouble_CLASS传递变量当调用外部库里的函数时,该为函数提供哪种类型的变量呢?MATLAB|的externexamplesshrlibshrlibsample库里对每一种特殊的变量类型都作出了说明。但我们首先必须把该库文件的路径添加到MATLAB的搜索路径中来,或者使该库文件所在的目录成为当前目录,两种做法的命令如下。addpath(‘C:MATLAB7externexamplesshrlib’)cd(‘C:MATLAB7externexamplesshrlib’)下面的例子就是加载该库并显示了其中的一些函数。loadlibraryshrlibsampleshrlibsample.hli|bfunctionsshrlibsample–full执行上述两行后,返回:Functionsinlibraryshrlibsample:[double,doublePtr]addDoubleRef(double,doublePtr,double)doubleaddMixedTypes(int16,int32,double)[double,c_structPtr]addStructByRef(c_structPtr)doubleaddStructFields(c_struct)c_structPtrPtrallocat|eStruct(c_structPtrPtr)voidPtrdeallocateStruct(voidPtr)doublePtrmultDoubleArray(doublePtr,int32)[lib.pointer,doublePtr]multDoubleRef(doublePtr)int16PtrmultiplyShort(int16Ptr,int32)stringreadEnum(Enum1)[string,string]stringToUpper(string)这里所有的函数都是用C语言编写的。一些通用的规则在|函数的输入输出变量问题上,以下几点应注意:1.许多变量类型,象int32、double与C语言的数据类型非常相象。这些变量只需要传递MATLAB型的数据就可以了。2.而有些C语言的变量类型,象**double、还有预定义型与标准MATLAB数据类型是完全不同的。这种情况下,有两种选择

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1、本文档共21页,下载后即可获取全部内容。
2、此文档《在MATLAB环境下访问外部函数的共享库文件 精品资料》由用户(158****5147)提供并上传付费之前 请先通过免费阅读内容等途径辨别内容,本站所有文档下载所得的收益全部归上传人(卖家)所有:如有侵权或不适当内容,请进行举报或申诉。
3、所有的PPT和DOC文档都被视为“模板”允许上传人保留音节日灵结构的情况下删减部份的内容,下裁前须认直查看,确认无误后再购买。
4、欧宝真人·(中国)科技有限公司网仅提供信息存储空间,仅对用户上传内容的表现方式做保护外理,无法对各卖家所售文档的直实性,完整性,准确性以及专业性等问题提供审核和保证,请谨慎购买。
5、本站文档的总页数,文档格式和文档大小以系统显示为准(内容中显示页数不一定正确),网站客服只以系统显示页数,文件格式,文档大小作为仲裁依据。

文档提供

发布者:158****5147

上传时间:2023-10-16 17:18:22

认证主体:齐**(个人认证)

IP归属:湖北省 武汉

相关标签

文档提供

发布者:158****5147

上传时间:2023-10-16 17:18:22

认证主体:齐**(个人认证)

IP归属:湖北省 武汉

相关标签