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

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

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对embeddedmatlabfunction的使用中文说明非常全面非常实用

所有的工作都是基于matlab 2010版本。一.对embedded matlab function的简要介绍?? ?Embedded MATLAB Function模块位于Simulink/User-Defined Functions模块库中。该模块工作于matlab语言的一个子集(称为 embedded matlab subset,不在此子集的函数,需要用eml.extrinsic声明或采用feval才能使用,后面介绍),该模块能够提供高效的代码(编译后高效)。它适用于某些用文字语言比用图形语言方便的算法描述。二.一个简单例子模型如下:其中Constant中是[2 3 4 5].本实例是计算输入的期望和标准差。代码如下:view plaincopy to clipboardprint?function?[mean,stdev]=stats(vals)??%#eml??%?calculates?a?statistical?mean?and?standard?deviation?fo?the?values?vals.??eml.extrinsic(plot);??len=length(vals);??mean=avg(vals,len);??stdev=sqrt(sum(((vals-mean).^2))/len);??plot(vals,-+);??function?mean=avg(array,size)??mean=sum(array)/size;??三.对改代码的解释。1.函数头部?? ?view plaincopy to clipboardprint?function?[mean,stdev]=stats(vals)????? ? 函数头部可以定义模块的输入、输出和参数(parameter),本例子中只有输入和输出。例如,在本例子中:mean和stdev是输出,vals是输入,并且可以很明显地在模块中显示出来。2.编译提示(Compilation Directive,pragma)??view plaincopy to clipboardprint?%#eml?????我个人认为%#eml这个编译提示是明确地告诉编辑器,下面的代码是按embedded matlab subset的语法编写的,编译器也应该按这种语法规则来编译。根据help文档,添加这个编译提示有两个目的:如果编译成功,可以提供明显地提示函数是按embedded matlab subset语法编译的;如果编译失败,可以提供详细的错误信息以帮助纠错。 ??3.外部函数声明??view plaincopy to clipboardprint?eml.extrinsic(plot);????? 如前文所述,embedded matlab subset是matlab语言的一个子集,所以有一些matlab函数是embedded matlab subset中没有的(如plot函数)。若想使用这些函数,有两种方法:eml.extrinsic来声明。例如eml.extrinsic(plot),声明之后就可以在函数中使用plot函数。运行时plot会自动在matlab中运行,而不是在embedded matlab subset中运行;使用feval函数。embedded matlab function自动将feval函数当做外部函数(即交予matlab执行,就好像天然进行过eml.extrinsic(feval)声明过一样)。例如feval(min,4,5)。4.子函数?view plaincopy to clipboardprint?function?mean=avg(array,size)??mean=sum(array)/size;????? ?其实子函数的写法和普通的m语言的子函数写法是相同的(在同一个文件中的子函数)。5.变量的使用特点?? ?embedded matlab中的变量使用和matlab的m语言是不同的,这一点要尤其注意。在matlab中,变量几乎是可以任意使用的,例如变量x可以使vector、matrix或者scaler,x可以是实数或者复数等等,不限制其数据类型、大小和complexity(表明是实数还是复数)。然而在embedded matlab中,除了输入数据的变量,几乎所有的变量的使用都要经过隐性的赋值声明。例如:如果输出变量y是一个256×1的vector,那么在使用y必须有一个类似的声明y=ones(256,1),这个声明就决定了y必须是个256×1的vector,而且数值必须是实数,double类型,这个在函数中就不能再改变了,否则会报错。下面在看一个我曾经犯过错的例子:view plaincopy to clipboardprint

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档