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正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda