对embeddedmatlabfunction的使用中文说明,非常全面,非常实用
《对embeddedmatlabfunction的使用中文说明,非常全面,非常实用》由会员分享,可在线阅读,更多相关《对embeddedmatlabfunction的使用中文说明,非常全面,非常实用(3页珍藏版)》请在装配图网上搜索。
1、所有的工作都是基于matlab2010版本。的简要介绍.对embeddedmatlabfunctionEmbeddedMATLABFunction模块位于Simulink/User-DefinedFunctions模块库中。该模块工作于matlab语言的一个子集(称为embeddedmatlabsubset,不在此子集的函数,需要用eml.extrinsic声明或采用feval才能使用,后面介绍),该模块能够提供高效的代码(编译后高效)。它适用于某些用文字语言比用图形语言方便的算法描述。二一个简单例子模型如下:MATLABFuinctiorDifplayl其中Constant中是2345.本实
2、例是计算输入的期望和标准差。代码如下:viewplaincopytoclipboardprint?1. functionmean,stdev=stats(vals)2. %#eml3. %calculatesastatisticalmeanandstandarddeviationfothevaluesvals.4. eml.extrinsic(plot);5. Ien=length(vals);6. mean=avg(vals,len);7. stdev=sqrt(sum(vals-mean).A2)/len);8. plot(vals,-+);9. functionmean=avg(arra
3、y,size)mean=sum(array)/size;三.对改代码的解释。函数头部viewplaincopytoclipboardprint?functionmean,stdev=stats(vals)函数头部可以定义模块的输入、输出和参数(parameter),本例子中只有输入和输出。例如,在本例子中:mean和stdev是输出,vals是输入,并且可以很明显地在模块中显示出来。编译提示(CompilationDirective,pragma)viewplaincopytoclipboardprint?1. %#eml我个人认为%#eml这个编译提示是明确地告诉编辑器,下面的代码是按emb
4、eddedmatlabsubset的语法编写的,编译器也应该按这种语法规则来编译。根据help文档,添加这个编译提示有两个目的:1. 如果编译成功,可以提供明显地提示函数是按embeddedmatlabsubset语法编译的;2. 如果编译失败,可以提供详细的错误信息以帮助纠错。外部函数声明viewplaincopytoclipboardprint?1.eml.extrinsic(plot);如前文所述,embeddedmatlabsubset是matlab语言的一个子集,所以有一些matlab函数是embeddedmatlabsubset中没有的(如plot函数)。若想使用这些函数,有两种方
5、法:1. eml.extrinsic来声明。例如eml.extrinsic(plot),声明之后就可以在函数中使用plot函数。运行时plot会自动在matlab中运行,而不是在embeddedmatlabsubset中运行;2. 使用feval函数。embeddedmatlabfunction自动将feval函数当做外部函数(即交予matlab执行,就好像天然进行过eml.extrinsic(feval)声明过一样)。例如feval(min,4,5)。子函数viewplaincopytoclipboardprint?1. functionmean=avg(array,size)2. mean
6、=sum(array)/size;其实子函数的写法和普通的m语言的子函数写法是相同的(在同一个文件中的子函数)变量的使用特点embeddedmatlab中的变量使用和matlab的m语言是不同的,这一点要尤其注意。在matlab中,变量几乎是可以任意使用的,例如变量x可以使vectormatrix或者scaler,x可以是实数或者复数等等,不限制其数据类型、大小和complexity(表明是实数还是复数)。然而在embeddedmatlab中,除了输入数据的变量,几乎所有的变量的使用都要经过隐性的赋值声明。例如:如果输出变量y是一个256X1的vector,那么在使用y必须有一个类似的声明y=
7、ones(256,1),这个声明就决定了y必须是个256x1的vector,而且数值必须是实数,double类型,这个在函数中就不能再改变了,否则会报错。下面在看一个我曾经犯过错的例子:viewplaincopytoclipboardprint?1.functionY=fcn(H,U)2.%#eml3.Y=complex(ones(256,1);4.k=0:255;5.W=exp(-2j*pi/256).Ak;6.Y=U.*W./H;这里由于输出Y要求是个256x1的vector,所以隐性赋值声明是Y=complex(ones(256,1),若用Y=ones(256,1)则报错,因为此时的Y限定为实数,而非复数,这一点要谨记。四.参考help文档位置embeddedmatlabsubset中可用的与matlab中同名、同参的函数列在help文档EmbeddedMATLABUsersGuideWorkingwiththeEmbeddedMATLABSubsetEmbeddedMATLABFunctionLibraryReferenee总的索引help文档SimulinkUsersGuideManagingBlocksUsingtheEmbeddedMATLABFunctionBlock
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。