方波的傅里叶变换及方波的MATLAB实现

一、傅里叶变换简介

傅里叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。傅里叶变换是一种线性的积分变换。它的理论依据是:任何连续周期信号都可以由一组适当的正弦曲线组合而成,即使用简单的正弦、余弦函数,可以拟合复杂函数。为什么要进行傅里叶变换?傅里叶变换是一种数学工具,‌能够将时域信号转换为频域信号。 具体来说,‌傅里叶变换将时域波形信号转换为离散的频率幅值,‌这些频率幅值构成了频域表示。‌‌傅里叶变换是一种信号分析方法,能让我们对信号的构成和特点进行深入的、定量的研究,有些在时域很难解决的复杂问题,通过傅里叶变换后在频域里就能得到很好的解决。

在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。下面我们先谈谈连续傅里叶变化中的方波信号及其傅里叶级数的三角函数展开。

二、方波及其傅里叶级数三角函数展开

根据傅里叶变换理论,方波信号也可以一系列的正弦波信号叠加组成。方波信号是一种在电子技术中常见的信号类型,它被广泛应用于数字电路、通信系统和控制系统中。理想方波只有"高"和"低"这两个值。方波信号被描述为周期性的,其波形为高电平和低电平两种状态的交替出现。

如上图所示的方波可以通过傅里叶级数三角函数展开:

f(t)=(4/π)*sin(wt)+(1/3)sin(3wt)+(1/5)sin(5wt) + ...

其中,w是正弦波的角频率,由周期T计算得到: w=2π/T。上式中的系数表示了每个正弦波信号的幅值。显然,随着正弦波频率的增加,其幅值逐渐减小,因此只需要保留前几项即可近似表示方波信号,但要精确表示方波必须是由无穷个正弦波叠加产生

三、部分运行结果。

从上面运行结果可以看出,随着正弦波叠加数的增加,其形状越来越趋近于理想方波。

四、程序代码

clc;

close all;

clear all

ts=0.01; %采样间隔

T = 2*pi; %周期

t=-2*T:ts:2*T; %显示两个周期

f = 1/T;

w = 2*pi*f; %f为频率

y = 0;

for i = 1:2:100000 %叠加1 3 5 7。。。100000次正弦波形

%for i = 1:2:21 %叠加1 3 5 7。。。21次正弦波形

y = y + sin(i.*w.*t)./(w*i);%波形叠加

end

plot(t, y,'r','LineWidth',1.5)

grid on %grid - Display or hide axes grid lines

wd = figure(1) ;

%set(wd,'name','Matlab产生由正弦波产生方波','NumberTitle','off');

set(wd,'name','Matlab产生由',num2str((i+1)/2),'个正弦波叠加产生波形','NumberTitle','off');

如果觉得本案例对大家今后的编程有帮助,还请点赞、收藏。如有改进意见可以与我联系,谢谢!

相关推荐
布莱克6052 小时前
Swift 常量详解:从 let 到编译期优化
服务器·开发语言·ssh·swift·常量·let
布莱克6052 小时前
Swift 可选类型(Optionals)详解:从原理到实战
开发语言·安全·ssh·swift·optional·可选类型
瑞雪兆丰年兮4 小时前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb
SomeOtherTime5 小时前
Rust生命周期介绍(AI回答)
开发语言·后端·rust
程序猿打工仔6 小时前
计算机基础(C语言)考编、专技岗
c语言·开发语言·算法
喵本喵叁肆6 小时前
Rényi 差分隐私:把隐私损失看成一族矩(英文原题:Rényi Differential Privacy (CSF 2017))
开发语言·r语言
Hvitur7 小时前
Java - Lambda
java·开发语言·python
xiaoye-duck7 小时前
《C++ 项目:手写大模型接入 SDK》DataManager数据管理模块:SQLite持久化存储
开发语言·数据库·c++·sqlite
Evand J7 小时前
【MATLAB例程,PMSM19】永磁同步电机(PMSM)基于多速率无迹卡尔曼滤波(UKF)的转速与转子位置估计。测量缺失、状态预测与恢复性能分析
开发语言·matlab·电机·ekf·卡尔曼·电机滤波
喵了几个咪7 小时前
GoWind Flow 拆解:一个 Go 工作流引擎与它的双模式设计器
开发语言·人工智能·后端·golang