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 =(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

在这里插入图片描述

  • 25
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值