一个简单的embedded matlab function例子
标签:
杂谈 |
所有的工作都是基于matlab 2010版本。
一.对embedded matlab function的简要介绍
二.一个简单例子
模型如下:
http://hi.csdn.net/attachment/201103/10/2857981_1299767812SIUJ.jpgmatlab
其中Constant中是[2 3 4 5].
本实例是计算输入的期望和标准差。代码如下:
-
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.函数头部
-
function
[mean,stdev]=stats(vals)
2.编译提示(Compilation Directive,pragma)
- 如果编译成功,可以提供明显地提示函数是按embedded matlab subset语法编译的;
-
如果编译失败,可以提供详细的错误信息以帮助纠错。
3.外部函数声明
-
eml.extrinsic('plot');
- eml.extrinsic来声明。例如eml.extrinsic('plot'),声明之后就可以在函数中使用plot函数。运行时plot会自动在matlab中运行,而不是在embedded matlab subset中运行;
- 使用feval函数。embedded matlab function自动将feval函数当做外部函数(即交予matlab执行,就好像天然进行过eml.extrinsic('feval')声明过一样)。例如feval_r('min',4,5)。
4.子函数
-
function
mean=avg(array,size) -
mean=sum(array)/size;
5.变量的使用特点
-
function
Y = fcn(H,U) -
%#eml
-
Y=complex(ones(256,1));
-
k=0:255;
-
W=exp(-2j*pi/256).^k';
-
Y=U.*W./H;
四.参考help文档位置

加载中…