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

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

相关推荐
唐僧洗头爱飘柔95272 分钟前
(Go基础)变量与常量?字面量与变量的较量!
开发语言·后端·golang·go·go语言初上手
·云扬·5 分钟前
Lambda 表达式详解
java·开发语言·笔记·学习·1024程序员节
linhhanpy13 分钟前
自制操作系统(九、操作系统完整实现)
c语言·开发语言·汇编·c++·操作系统·自制操作系统
ACALJJ3213 分钟前
STL整理
开发语言·c++
豆本-豆豆奶16 分钟前
最全面的Python重点知识汇总,建议收藏!
开发语言·数据库·python·oracle
Bosenya1219 分钟前
【信号处理】绘制IQ信号时域图、星座图、功率谱
开发语言·python·信号处理
monkey_meng19 分钟前
【Rust Crate之Actix Web(一)】
开发语言·后端·rust
AI原吾37 分钟前
探索PyAV:Python中的多媒体处理利器
开发语言·python·ai·pyav
oliveira-time1 小时前
爬虫学习8
开发语言·javascript·爬虫·python·算法
矛取矛求1 小时前
string接口的深度理解(内附思维导图)
c语言·开发语言·c++·接口·string