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

2024-06-06 09:20

本文主要是介绍27、matlab傅里叶变换:fft()函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、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)|")

视图效果

2、 高斯脉冲

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)|")

视图效果

 

 3、余弦波

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("频率")

视图效果

 

这篇关于27、matlab傅里叶变换:fft()函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035705

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N