当前位置: 首页 > article >正文

(46)MATLAB仿真从正弦波转换为方波

文章目录

  • 前言
  • 一、MATLAB代码
  • 二、仿真结果画图
  • 三、吉布斯效应


前言

本文使用MATLAB仿真的方法,给出从正弦波转换为方波的过程,说明方波的傅里叶级数展开式是如何由奇次谐波的和构成的。另外,说明了在此过程中的吉布斯效应。


一、MATLAB代码

以下给出的MATLAB代码,说明方波的傅里叶级数展开式是如何由奇次谐波的和构成的。

% 基波
f = 1;                    % 基频,单位Hz
fs = 300;                 % 采样率,单位samples/s
Ts = 1/fs;                % 采样间隔
T = 1;                    % 时长
t = 0:Ts:T;               % 时间向量
y = sin(2*pi*f*t);        % 基波

figure()
subplot(221)
plot(t,y);
grid on
title('基波(f=1Hz)')

% 基波加3次谐波的和信号
f3 = 3*f;
y = sin(2*pi*f*t) + sin(2*pi*f3*t)/3;

% figure()
subplot(222)
plot(t,y);
grid on
title('基波+3次谐波')


% 基波加第3579次谐波的和信号
f5 = 5*f;
f7 = 7*f;
f9 = 9*f;
y = sin(2*pi*f*t) + sin(2*pi*f3*t)/3 + ...
    sin(2*pi*f5*t)/5 + sin(2*pi*f7*t)/7 + ...
    sin(2*pi*f9*t)/9;

% figure()
subplot(223)
plot(t,y);
grid on
title('基波+3+5+7+9次谐波')

% 在基波上叠加更多高次谐波分量,一直到第19次谐波
% 此时,和信号更接近方波。实际上即使增加更多的高次谐波分量,和信号也不会变成理想的方波,这就是吉布斯效应。
y = zeros(10,length(t));
x = zeros(size(t));
for k = 1:2:19
    fk = k*f;
    x = x + sin(2*pi*fk*t)/(2*pi*k);
    y((k+1)/2,:) = x;
end

% figure()
subplot(224)
plot(t,y);
grid on
title('方波的构建:吉布斯效应')

% 绘制三维网格图,展示正弦波到方波的渐变过程。
figure()
mesh(y);
title('方波的构建')

二、仿真结果画图

基波加奇次谐波逼近方波的时域波形图:

在这里插入图片描述

三维网格图:

在这里插入图片描述

三、吉布斯效应

在基波上叠加更多高次谐波分量时,和信号将更接近方波。实际上,即使增加更多的高次谐波分量,和信号也不会变成理想的方波,这就是吉布斯效应。



http://www.kler.cn/news/359773.html

相关文章:

  • 【重拾算法第一天】质数约数欧拉筛 埃氏筛GCD
  • NoSQL 简介
  • [枚举坤坤]二进制枚举基础
  • 【WPF】中Binding的应用
  • (已开源-ECCV2024)BEV检测模型-LabelDistill,使用真值进行知识蒸馏
  • QT关闭界面后退出线程
  • docker 数据管理,数据持久化详解 一
  • dfs排列数字(新手)c++
  • 基序对酶特异性功能的影响-文献精读67
  • 虚拟现实辅助工程技术在现代汽车制造中的重要性
  • CentOS系统Nginx的安装部署
  • HashMap如何处理Hash碰撞
  • PHP爬虫:获取数据的入门详解
  • ArcGIS 最新底图服务地址
  • git 免密的方法
  • CANoe_C#如何调用CANoe的诊断
  • jmeter学习(8)界面的使用
  • 基于PHP的茶叶商城系统
  • 华为云软件开发生产线(CodeArts)9月新功能特性
  • 局域网——Prim Kruskal