根据傅里叶级数用matlab实现周期信号分解

  • 周期方波信号
    x ( t ) = ∑ n = 1 ∞ b n s i n ( n ω t ) x(t) = \sum_{n=1}^{\infty}b_nsin(n \omega t) x(t)=n=1bnsin(nωt)
    b n = { 0 , n = 2 , 4 , 6 , . . . 4 n π , n = 1 , 3 , 5 , . . . b_n = \begin{cases} 0, n=2,4,6,...\\ \frac{4}{n\pi}, n=1,3,5,... \end{cases} bn={0,n=2,4,6,...nπ4,n=1,3,5,...
% 周期方波信号的傅里叶级数
t = -1:0.001:1;
w0 = 2 * pi;
y = square(2 * pi * t,50);
%周期方波信号
plot(t,y), grid on;
axis([-1 1 -1.5 1.5]);
n_max = [1 3 5 7 31];
N = length(n_max);
for k = 1:N
    n = 1:2:n_max(k);
    b = 4./(pi*n);
    x = b * sin(w0*n'*t);
    figure;
    plot(t,y);
    hold on;
    plot(t,x);
    hold off;
    axis([-1 1 -1.5 1.5]),grid on;
    title(['最大谐波数=',num2str(n_max(k))]);
end

方波
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 周期锯齿脉冲信号
    b n = ( − 1 ) n + 1 1 n π b_n = (-1)^{n+1} \frac{1}{n\pi} bn=(1)n+1nπ1
    x ( t ) = 1 π ∑ n = 1 ∞ ( − 1 ) n + 1 1 n s i n ( n ω t ) x(t) = \frac{1}{\pi}\sum_{n=1}^{\infty}(-1)^{n+1} \frac{1}{n}sin(n \omega t) x(t)=π1n=1(1)n+1n1sin(nωt)
%周期锯齿脉冲信号的傅里叶级数
%取谐波次数为35
t = -3:0.001:3;
w = pi ;%w的确定
x = sawtooth(pi*(t+1));
figure;
plot(t,x);grid on;
axis([-3 3 -1.2 1.2])
Nf = 35;
bn(1) = 0;
for i = 1:Nf
    bn(i+1) = (-1)^(i+1)*1/(i*pi);
    cn(i+1) = abs(bn(i+1));
end
n_max = [1 2 3 7 21 35];
N = length(n_max);
for k = 1:N
    n = 1:n_max(k);
    b = (-1).^(n+1).*1./(n.*pi); 
    y = 2*b * sin(n'*w*t);%系数的设置,重新计算
    figure
    plot(t,x);hold on
    axis([-3 3 -1.2 1.2])
    plot(t,y);hold off
    title(['最大谐波数=',num2str(n_max(k))]);
end
figure;
k = 0:Nf;
stem(k,cn);
hold on;
plot(k,cn);
title('幅度频谱');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上内容有参考信号的matlab辅导书,频率周期系数的关系还有一点令人迷惑的地方,下午约了同学一起打羽毛球,三角脉冲信号以后再说吧,大概率会鸽

康康这篇文章,五分钟写出一个可以滑动条拖动的矩形脉冲合成的MatlabGUI程序,点这里

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值