信号处理趣学D4——利用谐波叠加对周期方波进行逼近

小虎最近试着用谐波叠加对周期方波逼近,发现实现起来很有趣,我用的仿真手段是MATLAB,这里跟大家分享一下学习经验。

结果

图1 n=1
图2 n=8
图3 n=16
图4 n=100
可以看到,随着叠加谐波的数量的增加,其拟合矩形波的效果越相似,可以预见,如果利用无数谐波叠加,那么其结果将会是一个矩形波。

代码分析

幅值为2,周期为3,讨论区间在[-3:3]。

A=2;
T=3;
t=-T:0.01:T;

简谐波叠加,n是简谐波叠加数量的1/2或-1后的1/2。

n=1;
for k=1:2:n
    x=x+4*A*sin(k*w0*t)/(k*pi);
end

作图。

plot(t,x,'k');
grid on;
hold on;
xs=A*square(w0*t);
plot(t,xs,'r');
text=['n=',num2str(n)];
xlabel({'t',text});
ylabel('x(t)');

完整代码

A=2;
T=3;
t=-T:0.01:T;
w0=2*pi/T;
x=zeros(size(t));
n=1;
for k=1:2:n
    x=x+4*A*sin(k*w0*t)/(k*pi);
end
plot(t,x,'k');
grid on;
hold on;
xs=A*square(w0*t);
plot(t,xs,'r');
text=['n=',num2str(n)];
xlabel({'t',text});
ylabel('x(t)');

更多

信号处理趣学D0——系列专栏的说明与目录

posted @   狂小虎  阅读(203)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示