MATLAB实现周期信号的傅里叶级数的展开

MATLAB小白,不足之处还请多指教!
设周期函数的波形为:
在这里插入图片描述
求该周期信号的傅里叶级数展开式,并画出傅里叶展开后的波形

我们通过信号与系统的学习可以知道,周期函数可以通过一系列的三角函数的线性组合来逼近,如下图所示:
MATLAB实现周期信号的傅里叶级数的展开_第1张图片

首先我们可以通过三角函数的正交性计算出傅里叶级数中的系数

MATLAB实现周期信号的傅里叶级数的展开_第2张图片
则周期信号的傅里叶级数展开为
在这里插入图片描述
通过求出傅里叶级数的系数,带入傅里叶级数展开式的式子,就可以求出周期信号的傅里叶级数展开式了。

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 =(2*sin((pi*x)/2))/pi + (2*sin((3*pi*x)/2))/(3*pi) + (2*sin((5*pi*x)/2))/(5*pi) + (2*sin((7*pi*x)/2))/(7*pi) + (2*sin((9*pi*x)/2))/(9*pi) + 1/2

MATLAB实现周期信号的傅里叶级数的展开_第3张图片

你可能感兴趣的:(MATLAB)