对embeddedmatlabfunction的使用中文说明非常全面非常实用

对embeddedmatlabfunction的使用中文说明非常全面非常实用

ID:8837667

大小:28.34 KB

页数:3页

时间:2018-04-09

对embeddedmatlabfunction的使用中文说明非常全面非常实用_第1页
对embeddedmatlabfunction的使用中文说明非常全面非常实用_第2页
对embeddedmatlabfunction的使用中文说明非常全面非常实用_第3页
资源描述:

《对embeddedmatlabfunction的使用中文说明非常全面非常实用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、所有的工作都是基于matlab2010版本。一.对embeddedmatlabfunction的简要介绍   EmbeddedMATLABFunction模块位于Simulink/User-DefinedFunctions模块库中。该模块工作于matlab语言的一个子集(称为embeddedmatlabsubset,不在此子集的函数,需要用eml.extrinsic声明或采用feval才能使用,后面介绍),该模块能够提供高效的代码(编译后高效)。它适用于某些用文字语言比用图形语言方便的算法描述。二.一个简单例子模型如下:其中Consta

2、nt中是[2345].本实例是计算输入的期望和标准差。代码如下:viewplaincopytoclipboardprint?1.function [mean,stdev]=stats(vals)  2.%#eml  3.% calculates a statistical mean and standard deviation fo the values vals.  4.eml.extrinsic('plot');  5.len=length(vals);  6.mean=avg(vals,len);  7.stdev=sqrt(su

3、m(((vals-mean).^2))/len);  8.plot(vals,'-+');  9.function mean=avg(array,size)  10.mean=sum(array)/size;  三.对改代码的解释。1.函数头部   viewplaincopytoclipboardprint?1.function [mean,stdev]=stats(vals)      函数头部可以定义模块的输入、输出和参数(parameter),本例子中只有输入和输出。例如,在本例子中:mean和stdev是输出,vals是输入,并

4、且可以很明显地在模块中显示出来。2.编译提示(CompilationDirective,pragma)  viewplaincopytoclipboardprint?1.%#eml     我个人认为%#eml这个编译提示是明确地告诉编辑器,下面的代码是按embeddedmatlabsubset的语法编写的,编译器也应该按这种语法规则来编译。根据help文档,添加这个编译提示有两个目的:1.如果编译成功,可以提供明显地提示函数是按embeddedmatlabsubset语法编译的;2.如果编译失败,可以提供详细的错误信息以帮助纠错。  

5、3.外部函数声明  viewplaincopytoclipboardprint?1.eml.extrinsic('plot');     如前文所述,embeddedmatlabsubset是matlab语言的一个子集,所以有一些matlab函数是embeddedmatlabsubset中没有的(如plot函数)。若想使用这些函数,有两种方法:1.eml.extrinsic来声明。例如eml.extrinsic('plot'),声明之后就可以在函数中使用plot函数。运行时plot会自动在matlab中运行,而不是在embeddedma

6、tlabsubset中运行;2.使用feval函数。embeddedmatlabfunction自动将feval函数当做外部函数(即交予matlab执行,就好像天然进行过eml.extrinsic('feval')声明过一样)。例如feval('min',4,5)。4.子函数 viewplaincopytoclipboardprint?1.function mean=avg(array,size)  2.mean=sum(array)/size;      其实子函数的写法和普通的m语言的子函数写法是相同的(在同一个文件中的子函数)。5

7、.变量的使用特点   embeddedmatlab中的变量使用和matlab的m语言是不同的,这一点要尤其注意。在matlab中,变量几乎是可以任意使用的,例如变量x可以使vector、matrix或者scaler,x可以是实数或者复数等等,不限制其数据类型、大小和complexity(表明是实数还是复数)。然而在embeddedmatlab中,除了输入数据的变量,几乎所有的变量的使用都要经过隐性的赋值声明。例如:如果输出变量y是一个256×1的vector,那么在使用y必须有一个类似的声明y=ones(256,1),这个声明就决定了y

8、必须是个256×1的vector,而且数值必须是实数,double类型,这个在函数中就不能再改变了,否则会报错。下面在看一个我曾经犯过错的例子:viewplaincopytoclipboardprint?1

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

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

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。