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

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

相关推荐
图像僧15 小时前
vs2019中的属性页使用说明
java·开发语言·jvm
YOU OU15 小时前
SpringBoot 日志
java·开发语言
江南十四行15 小时前
并发编程(二)
java·开发语言
weixin_4713830315 小时前
统一缩放单位基础(px、em、rem)
开发语言·javascript·ecmascript
yqcoder15 小时前
数据劫持的双雄:深入解析 Object.defineProperty 与 Proxy
开发语言·前端·javascript
qingfeng1541516 小时前
企业微信 API 自动化开发指南:从消息回调到智能运营实战
java·开发语言·python·自动化·企业微信
jonyleek16 小时前
性能就是生命线?规则引擎如何支撑实时决策
java·开发语言·数据库
AI科技星16 小时前
第二章 平行素数对网格:矩形→等腰梯形拓扑变换(完整公理终稿)
c语言·开发语言·线性代数·算法·量子计算·agi
宇明一不急16 小时前
go 链表 (标准库实现)
开发语言·链表·golang