夏默默 发表于 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=; 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=; y=eval();
%将函数名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文件构造再拿到命令窗口用。
页: [1]
查看完整版本: matlab中怎么表示一个函数啊