方波的傅里叶变换及方波的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');

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

相关推荐
愈努力俞幸运2 分钟前
c++ 头文件
开发语言·c++
永日456708 分钟前
学习日记-day24-6.8
开发语言·学习·php
BillKu9 分钟前
Java后端检查空条件查询
java·开发语言
科研工作站14 分钟前
【创新算法】改进深度优先搜索算法配合二进制粒子群的配电网故障恢复重构研究
matlab·配电网·故障恢复·改进粒子群·深度优先搜索·33节点
十五年专注C++开发26 分钟前
CMake基础:gcc/g++编译选项详解
开发语言·c++·gcc·g++
vortex51 小时前
探索 Shell:选择适合你的命令行利器 bash, zsh, fish, dash, sh...
linux·开发语言·bash·shell·dash
zzc9211 小时前
MATLAB仿真生成无线通信网络拓扑推理数据集
开发语言·网络·数据库·人工智能·python·深度学习·matlab
软件算法开发1 小时前
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
matlab·wsn·距离变化·能量开销·动态调整·低功耗拓扑控制开销算法
HUN金克斯1 小时前
C++/C函数
c语言·开发语言·c++
慢半拍iii1 小时前
数据结构——F/图
c语言·开发语言·数据结构·c++