matlab fft能否实现傅里叶级数展开

2021-01-13 05:30:50 字数 2508 阅读 2336

1楼:匿名用户

如果没有具体表达式只能通过拟合了。下面是帮助文档里的一个例子: load enso; f = fit(month,pressure,'fourier8') plot(f,month,pressure)

matlab怎么进行傅里叶级数

2楼:毛职汗和玉

你上面的程序,f_series函数是否有定义?若无定义,或定义不准确都有可能出错

将傅里叶系数的计算(输出a0,an,bn)以及函数图像的绘制编到m文件中

function

[a0,an,bn]=fly(f,l,k)

%f为一个周期内的分段函数(分两段,对分两段以上的函数可类似处理)

%2l为周期

%k为近似项数,k≥1

%计算傅里叶系数

symsxn

la0=1/l*int(f(1),-l,0)+1/l*int(f(2),0,l);

an=1/l*int(f(1)*cos(n*pi*x/l),-l,0)+1/l*int(f(2)*cos(n*pi*x/l),0,l);

bn=1/l*int(f(1)*sin(n*pi*x/l),-l,0)+1/l*int(f(2)*sin(n*pi*x/l),0,l);

%选择作图步长p

ifk>=4

p=fix(k/4);

else

p=1;

end%绘制4个近似子图

fori=1:4

f=a0/2+symsum(an*cos(n*pi*x/l)+bn*sin(n*pi*x/l),n,1,i*p);

f=subs(f,l,l);

subplot(2,2,i),ezplot(f,[-3*l,3*l]),title(['n=',int2str(i*p)])

end输入:

f=sym('[x,0]');

[a0,an,bn]=fly(f,pi,32)

输出:a0

=-1/2*lan=

-l*(cos(n*pi)+sin(n*pi)*n*pi-1)/n^2/pi^2bn=

-l*(-sin(n*pi)+cos(n*pi)*n*pi)/n^2/pi^2

显然以上结果并未化简(例如,sin(n*pi)=0)

有了傅里叶系数,利用公式f(x)=a0/2+∑{1,∞}[an*cos(n*pi*x/l)+bn*sin(n*pi*x/l)],即得到式

输出图像:

3楼:匿名用户

我会一点点傅里叶变换给你编一段,你做一些修改试试吧>>y=fft(y,512);pyy=y.*conj(y)/512;f=1000*(0:256)/512;plot(f,pyy(1:

257))title('你的程序’)xlabel(‘频率(hz)’)

用matlab求傅里叶级数。。

4楼:匿名用户

fsin=@(n,x)pi/4*sign(x).*sin(n*x);

fcos=@(n,x)pi/4*sign(x).*cos(n*x);

n=20;

fsin=zeros(1,n+1);

fcos=zeros(1,n+1);

forn=0:n

fsin(n+1)=quad(@(x)fsin(n,x),-pi,pi,1e-8)/pi;

fcos(n+1)=quad(@(x)fcos(n,x),-pi,pi,1e-8)/pi;

endsubplot(211),stem(0:n,fsin);title('sin');

subplot(212),stem(0:n,fcos);title('cos');

原来的信号可以表示为[-pi,pi]内的pi/4*sign(x)

反正就是根据傅立叶的公式,求原来函数和sinkx,coskx的乘积的积分

上述程序里fsin 就是 bk

fcos 就是 ak最后

用matlab对周期函数进行傅里叶如何做?

5楼:匿名用户

用电子词典查傅立叶的英文名称,再到matlab的帮助文件里找一下就行了,我身旁没词典

如何用matlab实现离散傅里叶级数?是级数,不是仅仅求出最大频率。

6楼:匿名用户

如果没有具体表达式只能通过拟合了。下面是帮助文档里的一个例子:

load enso;

f = fit(month,pressure,'fourier8')plot(f,month,pressure)

matlab的fourier()函数和fft()函数有什么区别? 20

7楼:匿名用户

fourier是符号函数,用于符号运算。例如:fourier(exp(-x^2),x,t)返回 pi^(1/2)*exp(-1/4*t^2)

fft为快速傅里叶变换,专门用于离散信号