MATLAB实现周期信号的傅里叶级数的展开
MATLAB小白,不足之处还请多指教!
设周期函数的波形为:
求该周期信号的傅里叶级数展开式,并画出傅里叶展开后的波形
我们通过信号与系统的学习可以知道,周期函数可以通过一系列的三角函数的线性组合来逼近,如下图所示:
首先我们可以通过三角函数的正交性计算出傅里叶级数中的系数
则周期信号的傅里叶级数展开为
通过求出傅里叶级数的系数,带入傅里叶级数展开式的式子,就可以求出周期信号的傅里叶级数展开式了。
MATLAB代码
function F=fourier
syms x;
T=input('T=');
n=10; %谐波的阶数
t=0:0.001:16;
%如果创建-1,+1的方波直接调用square即可
%50是50%占空比
f=max(square(pi*0.5*t,50),0);%创建方波最大值是1,最小值是0
plot(t,f);
grid on;
hold on;
axis([0 4*pi -0.5 1.5]);
A0=1/2;%可根据函数直接算出
F=0;
Fx=0;
for i=1:n
As=int(2*cos(2*pi*i*x/T)/T,x,0,T/2);%傅里叶系数an
Bs=int(2*sin(2*pi*i*x/T)/T,x,0,T/2);%傅里叶系数bn
F=F+As*cos(2*pi*i*t/T)+Bs*sin(2*pi*i*t/T);%求傅里叶级数展开
Fx=Fx+As*cos(2*pi*i*x/T)+Bs*sin(2*pi*i*x/T);
end
F=F+A0;
Fx=Fx+A0;
Fx
%figure(2)
plot(t,F)
运行结果如下
Fx =(2sin((pix)/2))/pi + (2sin((3pix)/2))/(3pi) + (2sin((5pix)/2))/(5pi) + (2sin((7pix)/2))/(7pi) + (2sin((9pix)/2))/(9pi) + 1/2