27、matlab傅里叶变换:fft()函数

1、傅里叶变换简介

傅里叶变换是数学中一种非常重要的工具,用于将一个函数(通常是时域函数)分解成一组正弦和余弦函数的和。通过傅里叶变换,可以将一个信号从时域转换到频域,以便更好地理解信号的频率成分和频谱特征。

傅里叶变换的定义通常有两种形式:连续傅里叶变换(Continuous Fourier Transform)和离散傅里叶变换(Discrete Fourier Transform)。

连续傅里叶变换:连续傅里叶变换用于连续信号,将一个时域连续函数转换为一个频域连续函数。

数学上表示为:  F(\omega )=\int_{-\propto }^{\propto }f(t)e^{-j\omega t}dt

其中,f(t) 是时域函数,F(ω) 是频域函数,ω 是频率。

离散傅里叶变换:离散傅里叶变换用于离散信号,将一个时域离散序列转换为一个频域离散序列。数学上表示为: F(k)=\sum_{n=0}^{N-1}f(n)e^{-j\frac{2\pi }{N}kn}

其中,f(n) 是离散信号序列,F(k) 是频谱序列,N 是信号的长度,k 是频率系数。

傅里叶变换在信号处理、通信、图像处理、声音分析等领域广泛应用。它可以将信号从时域转换为频域,便于进行频率分析、滤波、压缩等操作。同时,逆傅里叶变换可以将频域信号重新转换为时域信号。傅里叶变换的理论基础非常深刻,应用也非常广泛,是现代信号处理和通信领域的基础工具之一。

2、fft  快速傅里叶变换

简介

快速傅里叶变换(Fast Fourier Transform,FFT)是一种快速计算傅里叶变换的算法,它可以在 O(NlogN) 的时间复杂度内计算出 N 个点的离散傅里叶变换。相比传统的直接计算傅里叶变换的方法,FFT具有更高的计算效率,特别适用于对大规模数据进行频域分析。

FFT算法的发展历史悠久,最著名的是Cooley-Tukey算法,它利用了傅里叶变换的对称性和周期性,将一个 N 点DFT(Discrete Fourier Transform)分解为两个 2N/2 点DFT。通过迭代的方式,可以将时间复杂度从O(N2) 降低到 O(NlogN)。

FFT算法在信号处理、图像处理、通信系统等领域得到了广泛的应用,例如在音频处理中进行频谱分析、滤波处理,在通信系统中进行信号调制解调、频谱估计等。由于FFT算法的高效性和稳定性,它在实际工程中经常被使用。

总的来说,快速傅里叶变换是一种高效的计算傅里叶变换的算法,能够快速准确地将信号从时域转换到频域,为信号处理和频谱分析提供了非常重要的工具。

语法

Y = fft(X) 使用快速傅里叶变换 (FFT) 算法计算 X 的离散傅里叶变换 (DFT)。
Y = fft(X,n) 返回 n 点 DFT。
Y = fft(X,n,dim) 返回沿维度 dim 的傅里叶变换。例如,如果 X 是矩阵,则 fft(X,n,2) 返回每行的 n 点傅里叶变换含噪信号

1)原始信号加噪声

代码

Fs = 1000;                          
T = 1/Fs;                   
L = 1500;             
t = (0:L-1)*T;  
%振幅为 0.8 的 DC 偏移量、振幅为 0.7 的 50 Hz 正弦量和振幅为 1 的 120 Hz 正弦量。
%w/2Pi=频率
S = 0.8 + 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
%均值为零、方差为 4 的随机噪声扰乱该信号。
X = S + 2*randn(size(t));
plot(1000*t,X)
title("信号加噪声")
xlabel("毫秒")
ylabel("幅度")

视图效果

 2)傅里叶变换显示正频率部分

代码

Y = fft(X);%傅里叶变换
plot(Fs/L*(0:L-1),abs(Y))%复数求模
title("FFT正频率部分")
xlabel("Hz")
ylabel("|fft(X)|")

视图效果

3)傅里叶变换显示全频率部分 

代码

%该图显示五个频率峰值,包括 DC 偏移量在 0 Hz 处的峰值。
%在此示例中,信号预计在 0 Hz、50 Hz 和 120 Hz 处有三个
%频率峰值。此处,绘图的后半部分是前半部分的镜像,
plot(Fs/L*(-L/2:L/2-1),abs(fftshift(Y)))%fftshift 显示正负频率
title("FFT全频率部分")
xlabel("Hz")
ylabel("|fft(X)|")

视图效果

4) 精确检索振幅

代码

%采用原始的、未破坏信号的傅里叶变换并检索精确振幅在 0.8、0.7 和 1.0 处。
f = Fs/L*(0:(L/2));
Y = fft(S);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);plot(f,P1) 
title("检索结果")
xlabel("Hz")
ylabel("|P1(f)|")

视图效果

3、 高斯脉冲

简介

高斯脉冲是一种具有特定频谱特性的信号,它在信号处理和通信工程中有着广泛的应用。高斯脉冲的时间域表达式为: 2g(t)=Ae−αt2 其中,A 是脉冲的幅度,α 是一个控制脉冲宽度的正数。

高斯脉冲的频谱特性主要体现在其傅里叶变换后的频谱形状。高斯脉冲的傅里叶变换可以通过傅里叶变换的性质和高斯函数的特性来求解。

其频谱可以表示为:\frac{A}{2\sqrt{\pi a}}=e^{-\frac{-(2\pi f )^{2})}{4a}}

具体而言,高斯脉冲的频谱是一个以零频率为中心的钟形曲线,频谱宽度受到参数 α 控制,脉冲在时域中越短,频谱中心频率越高,频谱越窄。

高斯脉冲的特性使得它在传输、通信系统中具有很好的性能。例如,在雷达系统中,高斯脉冲被用作雷达信号的发射脉冲,因为高斯脉冲具有较好的峰值信噪比和抗干扰性能。在通信系统中,高斯脉冲可以用于OFDM(正交频分复用)系统的时域信号设计,减小子载波间的相互干扰。

总的来说,高斯脉冲作为一种特定频谱特性的信号,在信号处理、通信系统等领域发挥着重要作用,具有很好的抗噪声、抗干扰性能,广泛应用于实际工程中。

1)时域脉冲信号

代码

%高斯脉冲
Fs = 44100;         
T = 1/Fs;           
t = -0.5:T:0.5;    
L = length(t);     
X = 1/(0.4*sqrt(2*pi))*(exp(-t.^2/(2*(0.1*1e-3)^2)));
plot(t,X)
title("时域脉冲信号")
xlabel("t")
ylabel("X(t)")
axis([-1e-3 1e-3 0 1.1])

视图效果

2)傅里叶变换

代码

n = 2^nextpow2(L);%2次幂输入长度
Y = fft(X,n);
f = Fs*(0:(n/2))/n;
P = abs(Y/sqrt(n)).^2;
plot(f,P(1:n/2+1)) 
title("高斯脉冲")
xlabel("Hz")
ylabel("|P(f)|")

视图效果

 

 4、余弦波

1)时域效果

代码

%3余弦波
Fs = 1000;                    
T = 1/Fs;                  
L = 1000;                    
t = (0:L-1)*T;
x1 = cos(2*pi*50*t);          
x2 = cos(2*pi*150*t);        
x3 = cos(2*pi*300*t);         
X = [x1; x2; x3];
subplot(3,1,1)
plot(t(1:100),X(1,1:100))
title('50HZ时序')
subplot(3,1,2)
plot(t(1:100),X(2,1:100))
title('150HZ时序')
subplot(3,1,3)
plot(t(1:100),X(3,1:100))
title('300HZ时序')

视图效果

 2)傅里叶变换

代码

dim = 2;%行方向
Y = fft(X,L,dim);
P2 = abs(Y/L);
P1 = P2(:,1:L/2+1);
P1(:,2:end-1) = 2*P1(:,2:end-1);
subplot(3,1,1)
plot(0:(Fs/L):(Fs/2-Fs/L),P1(1,1:L/2))
title('50HZ傅里叶变换')
subplot(3,1,2)
plot(0:(Fs/L):(Fs/2-Fs/L),P1(2,1:L/2))
title('150HZ傅里叶变换')
subplot(3,1,3)
plot(0:(Fs/L):(Fs/2-Fs/L),P1(3,1:L/2))
title('300HZ傅里叶变换')

视图效果 

 5、正弦波相位

1)正弦波傅里叶变换

代码

Fs = 100;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*15*t - pi/4) + cos(2*pi*40*t + pi/2);
y = fft(x);
z = fftshift(y);ly = length(y);
f = (-ly/2:ly/2-1)/ly*Fs;
stem(f,abs(z))
title("傅里叶双边显示")
xlabel("Frequency (Hz)")
ylabel("|y|")

视图效果

2)相位获取

代码

1tol = 1e-6;
z(abs(z) < tol) = 0;
theta = angle(z);stem(f,theta/pi)
title("相位频率图")
xlabel("Hz)")
ylabel("频率")

视图效果

 

6、总结 

傅里叶变换是一种将信号从时域转换到频域的重要工具,它在信号处理、图像处理、通信系统等领域有着广泛的应用。以下是傅里叶变换的一些总结性内容:

  1. 时域和频域:在信号处理中,时域是指信号随时间变化的情况,频域是指信号的频率成分。傅里叶变换能够将信号在时域和频域之间进行转换,从而揭示信号的频率分量和振幅。

  2. 离散傅里叶变换(DFT):用于将离散信号转换到频域。DFT能够将一段离散信号表示为一系列复数,分别表示不同频率和振幅的成分。

  3. 傅里叶级数:描述周期信号的频域表示,将周期信号分解为多个不同频率的正弦和余弦波形式。

  4. 傅里叶变换的性质:包括线性性质、频率平移、频率调制、卷积性质等,这些性质在信号处理中有着重要的作用。

  5. 逆变换:傅里叶变换的逆变换能够将频域信号转换回时域信号,恢复原始信号的形式。

  6. 快速傅里叶变换(FFT):FFT是一种计算傅里叶变换的高效算法,能够在 �(�log⁡�)O(NlogN) 的时间复杂度内计算出 �N 个数据点的傅里叶变换,被广泛应用于实际工程中。

  7. 应用领域:傅里叶变换在信号处理、通信系统、图像处理等领域有着广泛的应用,例如数字滤波、频谱分析、信号调制解调等。

总的来说,傅里叶变换是一种非常重要的信号处理工具,通过时域和频域之间的转换,能够揭示信号的频率特性,方便信号处理和分析。在实际应用中,合理使用傅里叶变换可以帮助工程师更好地理解和处理信号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/353495.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[保姆级教程]uniapp实现页面路由配置

文章目录 新建目录新建页面配置页面路由修改tabBar地址其他&#xff1a;在package.json中的pages配置详细 新建目录 先点击src–》新建–》目录 输入名称&#xff0c;并以此类推完成所有新建目录 新建页面 右击目录&#xff0c;点击新建–》vue文件 弹出弹框&#xff0c;…

JVM性能优化工具及问题排查

jvm性能优化工具 jdk提供给我们了很实用的工具来分析JVM的状态&#xff0c;线程以及配置&#xff0c;这些工具包含于jdk中&#xff0c;并且以java实现&#xff0c;是JVM性能优化必不可少的工具集&#xff0c;这些工具都在$JAVA_HOME/bin下 jps、jinfo、jstack、jmap、jstat基本…

力扣793. 阶乘函数后 K 个零

Problem: 793. 阶乘函数后 K 个零 文章目录 题目描述思路即解法复杂度Code 题目描述 思路即解法 1.根据题意可知即是要求取满足条件的n最小是多少&#xff0c;最大是多少&#xff0c;最大值和最小值一减&#xff0c;就可以算出来有多少个n满足条件了。 2.由于题目中的阶乘存在单…

springboot连接多个库

一个SpringBoot项目&#xff0c;同时连接两个数据库&#xff1a;比如一个是Mysql数据库&#xff0c;一个是oracle数据库&#xff08;啥数据库都一样&#xff0c;连接两个同为oracle的数据库&#xff0c;或两个不同的数据库&#xff0c;只需要更改对应的driver-class-name和jdbc…

读AI新生:破解人机共存密码笔记05逻辑

1. 困难问题 1.1. 管理政府或教授分子生物学之类的问题要困难得多 1.2. 这些环境很复杂&#xff0c;大部分是不可观察的&#xff08;一个国家的状态&#xff0c;一个学生的思想状态&#xff09;&#xff0c;还有更多的对象和对象类型&#xff0c;对动作…

云上战场:ToDesk云电脑、青椒云、顺网云全面对决

前言 记得端午放假期间&#xff0c;我已经在旅游的路上了&#xff0c;老板突然发短信&#xff0c;让我给他画个图&#xff0c;我手上的战斗机已经是十年前的老古董了(平常一直用的公司电脑&#xff0c;也没想过要换)&#xff0c;压根满足不了老板的任务要求&#xff0c;不得已&…

了解振弦采集仪在建筑物安全监测中的应用与研究

了解振弦采集仪在建筑物安全监测中的应用与研究 摘要&#xff1a;河北稳控科技振弦采集仪是一种常用的结构物安全监测设备&#xff0c;广泛应用于建筑物、桥梁、塔楼等工程结构的监测。本文将从振弦采集仪的原理、应用案例和研究进展等方面进行详细介绍&#xff0c;以便更好地…

ClickHouse安装与下载22.3.2.2

ClickHouse安装与下载 目录 1. ClickHouse简介 1.1 ClickHouse优点&#xff1a; 1.2 ClickHouse缺点&#xff1a; 1.3 ClickHouse引擎&#xff1a; 1.3.1 数据库引擎 1.3.2 表引擎 2. ClickHouse下载安装 2.1 ClickHouse下载安装 2.2 ClickHouse使用 1. ClickHouse简…

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发&#xff08;发布&#xff09;-SelectCamelWords[选中驼峰单词]&#xff08;idea源代码&#xff09; 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址&#xff1a;https://github.com/yangfeng…

RIP路由协议汇总、版本兼容、定时器、协议优先级配置(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。路由汇总的原理是&#xff0c;同一个自然网段内的…

Java每日作业day6.18

ok了家人们今天我们继续学习方法的更多使用&#xff0c;闲话少叙&#xff0c;我们来看今天学了什么 1.重载 在同一个类中&#xff0c;可不可以存在同名的方法&#xff1f;重载:在同一个类中&#xff0c;定义了多个同名的方法&#xff0c;但每个方法具有不同的参数类型或参数个…

ClickHouse 高性能的列式数据库管理系统

ClickHouse是一个高性能的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;。以下是对ClickHouse的详细介绍&#xff1a; 基本信息&#xff1a; 来源&#xff1a;由俄罗斯的Yandex公司于2016年开源。全称&…

DDP算法之线性化和二次近似(Linearization and Quadratic Approximation)

DDP算法线性化和二次近似 在DDP算法中,第三步是线性化系统动力学方程和二次近似代价函数。这一步是关键,它使得DDP能够递归地处理非线性最优控制问题。通过线性化和二次近似,我们将复杂的非线性问题转换为一系列简单的线性二次问题,逐步逼近最优解。通过这些线性化和二次近…

R语言做图

目录 1. 图形参数 2. 低级图形 3. 部分高级图形 参考 1. 图形参数 图形参数用于设置图形中各种属性。 有些参数直接用在绘图函数内&#xff0c;如plot函数可以用 pch&#xff08;点样式&#xff09;、col&#xff08;颜色&#xff09;、cex&#xff08;文字符号大小倍数&…

pdf怎么压缩到2m以内或5m以内的方法

PDF作为一种广泛使用的文档格式&#xff0c;已经成为我们工作和生活中不可或缺的一部分。然而&#xff0c;有时候PDF文件内存会比较大&#xff0c;给我们的存储和传输带来了很大的不便。因此&#xff0c;学会压缩 PDF 文件是非常必要的。 打开"轻云处理pdf官网"&…

48-1 内网渗透 - 内核漏洞提权

权限提升 提权是指将普通用户的权限进行提升,也叫特权提升。在渗透测试中,通过利用各种漏洞提升webshell权限以夺得服务器权限。 系统内核漏洞提权 当目标系统存在已知的内核漏洞且没有更新安全补丁时,攻击者可以利用这些漏洞进行提权,从而获得系统级别的访问权限。 ###…

【记录45】【案例】echarts 柱状图3D效果

环境 echarts4.1.0 <template> <!-- 商场各楼层统计 --><div id"threethree"></div> </template><script> import * as echarts from "echarts" export default {name:"",components:{},data(){return {…

Python基础用法 之 运算符

1.算数运算符 符号作用说明举例加与“”相同 - 减与“-”相同*乘 与“ ”相同 9*218/除 与“ ”相同 9/24.5 、6/32.0//求商&#xff08;整数部分&#xff09; 两个数据做除法的 商 9//24%取余&#xff08;余数部分&#xff09; 是两个数据做除法的 余数 9%21**幂、次方2**…

vue3-父子通信

一个简单的vue3子组件调用父组件方法的demo <template> <div> <h2>Parent Component父组件</h2> <ChildComponent notify-parent"handleParentMethod" /> </div> </template> <script> import { ref } fr…

三星S20以上手机中的动态相片及其分解

三星S20以后的相机&#xff0c;相机拍出来的图片&#xff0c;用三星手机自带的“相册”打开之后&#xff0c;还会有“查看动态照片”的选项&#xff0c;点击之后就能查看拍照片时前后2秒左右的视频&#xff01; 不知道这个功能是不是三星独有的。 这样得到的图片非常大。因为…