数学建模社区-数学中国

标题: matlab中怎么表示一个函数啊 [打印本页]

作者: 夏默默    时间: 2013-8-9 16:49
标题: matlab中怎么表示一个函数啊

function Faf = frft(f, a)
% The fast Fractional Fourier Transform
% input: f = samples of the signal
%        a = fractional power
% output: Faf = fast Fractional Fourier transform


程序是这样 我怎么表示f啊 比如我想输入正弦函数 怎么表示
作者: madio    时间: 2013-8-9 18:59
你这样定义就可以,给你举个例子,比如任意定义函数如下:
function r=ff(x) r=sin(x);

定义一个求积分的函数integr(),函数如下定义:
function result=integr(a,b,n,fun) ;
h=(b-a)/n; x=[a:h:b]; y=fun(x);%fun为传入的函数指针,可以直接作为引用
result=sum(y);

则可以通过如下方式使用:
integr(0,1,1000,@ff)%‘@’即表示ff作为函数指针传入,有时也叫做函数句柄

还有一种方法是把f(x)函数名作为字符串传入,则在Integr()中只需将f(x)函数名及其参数写为一个字符串,使用eval(字符串)执行即可,如:
function result=integr(a,b,n,fun)
%定义积分函数,a为积分下限,b为积分上限,n为划分区间的个数,fun为需进行计算的函数的文件名
h=(b-a)/n; x=[a:h:b]; y=eval([fun,'(x)']);
%将函数名fun和其参数x合成一个字符串并执行字符串,即执行计算fun(x),注意不能丢了fun的括号。
result=sum(y);

在命令窗口引用即可:将'ff'换为其他函数名字符串即可进行计算其数值积分。
integr(0,1,1000,'ff')
作者: magic2728    时间: 2013-8-9 20:47
这个问题涉及到函数调用的问题,有两种方式,可以以字符串格式传入再用eval调用同名函数,也可以@fun方式作为函数指针传入,站长的解释非常清楚,希望楼主可以理解这里面的深层含义。
作者: xx372859523    时间: 2013-8-12 18:27
你可以利用M文件构造再拿到命令窗口用。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5