0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Matlab实现傅里叶变换的步骤

冬至子 来源:算法工程师的学习日志 作者:搬砖工程师domi 2023-07-19 17:47 次阅读

傅里叶变换是将按时间或空间采样的信号与按频率采样的相同信号进行关联的数学公式。在信号处理中,傅里叶变换可以揭示信号的重要特征(即其频率分量)。

图片

对于包含 n 个均匀采样点的向量 x,其傅里叶变换定义为

图片

ω=e−2πi/n 是 n 个复单位根之一,其中 i 是虚数单位。对于 x 和 y,索引 j 和 k 的范围为 0 到 n−1。

MATLAB中的 fft 函数使用快速傅里叶变换算法来计算数据的傅里叶变换。以正弦信号 x 为例,该信号是时间 t 的函数,频率分量为 15 Hz 和 20 Hz。使用在 10 秒周期内以 150 秒为增量进行采样的时间向量。

t = 0:1/50:10-1/50;                     
x = sin(2*pi*15*t) + sin(2*pi*20*t);
figure
plot(t,x)

图片

计算信号的傅里叶变换,并在频率空间创建对应于信号采样的向量 f。

y = fft(x);     
f = (0:length(y)-1)*50/length(y);

以频率函数形式绘制信号幅值时,幅值尖峰对应于信号的 15 Hz 和 20 Hz 频率分量。

figure
plot(f,abs(y))
title('Magnitude')

图片

该变换还会生成尖峰的镜像,对应于信号的负频率。为了更好地以可视化方式呈现周期性,使用 fftshift 函数对变换执行以零为中心的循环平移。

n = length(x);                         
fshift = (-n/2:n/2-1)*(50/n);
yshift = fftshift(y);
figure
plot(fshift,abs(yshift))

图片

含噪信号

在科学应用中,信号经常遭到随机噪声破坏,掩盖其频率分量。傅里叶变换可以清除随机噪声并显现频率。例如,通过在原始信号 x 中注入高斯噪声,创建一个新信号 xnoise

rng('default')
xnoise = x + 2.5*randn(size(t));

频率函数形式的信号功率是信号处理中的一种常用度量。功率是信号的傅里叶变换按频率样本数进行归一化后的平方幅值。计算并绘制以零频率为中心的含噪信号的功率谱。尽管存在噪声,仍可以根据功率中的尖峰辨识出信号的频率。

ynoise = fft(xnoise);
ynoiseshift = fftshift(ynoise);    
power = abs(ynoiseshift).^2/n; 
figure
plot(fshift,power)
title('Power')

1.jpg

计算效率

直接使用傅里叶变换公式分别计算 y 的 n 个元素需要 n平方 数量级的浮点运算。使用快速傅里叶变换算法,则只需要 nlogn 数量级的运算。在处理包含成百上千万个数据点的数据时,这一计算效率会带来很大的优势。在 n 为 2 的幂时,许多专门的快速傅里叶变换实现可进一步提高效率。

以加利福尼亚海岸的水下麦克风所收集的音频数据为例。在康奈尔大学生物声学研究项目维护的库中可以找到这些数据。载入包含太平洋蓝鲸鸣声的文件 bluewhale.au,并对其中一部分数据进行格式化。可使用命令 sound(x,fs) 来收听完整的音频文件。

whaleFile = 'bluewhale.au';
[x,fs] = audioread(whaleFile);
whaleMoan = x(2.45e4:3.10e4);
t = 10*(0:1/fs:(length(whaleMoan)-1)/fs);
figure
plot(t,whaleMoan)
xlabel('Time (seconds)')
ylabel('Amplitude')
xlim([0 t(end)])

图片

指定新的信号长度,该长度是大于原始长度的最邻近的 2 的幂。然后使用 fft 和新的信号长度计算傅里叶变换。fft 会自动用零填充数据,以增加样本大小。此填充操作可以大幅提高变换计算的速度,对于具有较大质因数的样本大小更是如此。

m = length(whaleMoan); 
n = pow2(nextpow2(m));
y = fft(whaleMoan,n);

绘制信号的功率谱。绘图指示,鸣声包含约 17 Hz 的基本频率和一系列谐波(其中强调了第二个谐波)。

f = (0:n-1)*(fs/n)/10; % frequency vector
power = abs(y).^2/n;   % power spectrum      
figure
plot(f(1:floor(n/2)),power(1:floor(n/2)))
xlabel('Frequency')
ylabel('Power')

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 变换器
    +关注

    关注

    17

    文章

    2027

    浏览量

    108399
  • FFT
    FFT
    +关注

    关注

    15

    文章

    425

    浏览量

    58651
  • MATLAB仿真
    +关注

    关注

    4

    文章

    174

    浏览量

    19640
  • 傅里叶变换
    +关注

    关注

    5

    文章

    415

    浏览量

    42254
  • 信号采样电路

    关注

    1

    文章

    2

    浏览量

    1164
收藏 人收藏

    评论

    相关推荐

    图像频率域分析之傅里叶变换

    文章目录傅里叶变换基础傅里叶级数傅里叶积分傅里叶变换一维连续傅里叶变换一维离散傅里叶变换二维离散傅里叶变换
    发表于 05-22 07:41

    傅里叶变换是什么?如何求傅里叶变换

    傅里叶变换是什么?三傅里叶变换的意义是什么?如何求傅里叶变换
    发表于 05-08 09:23

    DSP变换运算-傅里叶变换

    第24章 DSP变换运算-傅里叶变换本章节开始进入此教程最重要的知识点之一傅里叶变换。关于傅里叶变换,本章主要是把傅里叶相关的基础知识进行必要的介绍,没有这些基础知识的话,后面学习FF
    发表于 08-03 06:14

    傅立叶变换五大性质的matlab实现

    matlab关于傅里叶变换的一些实现方法。
    发表于 02-23 18:21 0次下载

    傅立叶变换matlab实现

    有关傅里叶变换matlab教程,简单明了。
    发表于 02-23 18:22 0次下载

    小波变换傅里叶变换好在哪里_小波变换傅里叶变换详解

    小波变换傅里叶变换有什么区别吗?小波变换傅里叶变换哪个好?我们通过小波变换傅里叶变换的详细
    发表于 01-13 11:02 1.5w次阅读
    小波<b class='flag-5'>变换</b>比<b class='flag-5'>傅里叶变换</b>好在哪里_小波<b class='flag-5'>变换</b>与<b class='flag-5'>傅里叶变换</b>详解

    使用Numpy和OpenCV实现傅里叶和逆傅里叶变换

      文章从实际出发,讲述了什么是傅里叶变换,它的理论基础以及Numpy和OpenCV实现傅里叶和逆傅里叶变换,并最终用高通滤波和低通滤波的示例。
    的头像 发表于 07-05 16:04 1256次阅读

    matlab对信号进行傅里叶变换

    傅氏变换分析是信号分析中很重要的方法,借助matlab可以很方便的对各类信号进行傅氏频域分析。本文介绍了集中离散的傅氏变换以及matlab实现
    的头像 发表于 07-19 10:10 1362次阅读
    用<b class='flag-5'>matlab</b>对信号进行<b class='flag-5'>傅里叶变换</b>

    谈谈Matlab短时傅里叶变换和小波变换的时频

    本文主要给定一小段音频,通过短时傅里叶变换和小波变换制作时频图。音频的采样率为44100
    的头像 发表于 07-19 17:44 1239次阅读
    谈谈<b class='flag-5'>Matlab</b>短时<b class='flag-5'>傅里叶变换</b>和小波<b class='flag-5'>变换</b>的时频

    傅里叶变换基本性质 傅里叶变换本质 傅里叶变换的应用

    傅里叶变换基本性质 傅里叶变换本质 傅里叶变换的应用 傅里叶变换是现代数学、物理学、工程学等领域中非常重要的一种数学工具和基本理论。在信号处理、图像处理、通信技术、音乐分析、光学、医学
    的头像 发表于 09-07 16:18 5937次阅读

    傅里叶变换实现方法

    傅里叶变换实现方法  傅里叶变换是一种将信号在时间域和频率域之间相互转换的数学工具。它的实现方法有很多种,其中最常见的是离散傅里叶变换(D
    的头像 发表于 09-07 16:47 699次阅读

    傅里叶变换和反变换公式

    傅里叶变换和反变换公式  傅里叶变换和反变换在信号处理领域中被广泛应用。傅里叶变换是将一个时域信号转换为频域信号的过程,而傅里叶反
    的头像 发表于 09-07 16:53 1.1w次阅读

    如何由傅里叶变换推出傅里叶反变换

    如何由傅里叶变换推出傅里叶反变换  傅里叶变换和傅里叶反变换是信号处理和通信领域中的两个重要概念,是数字信号和连续信号的重要数学分析方法之一。傅里叶
    的头像 发表于 09-07 17:04 1521次阅读

    傅里叶变换和离散傅里叶变换的关系

    傅里叶变换和离散傅里叶变换的关系 傅里叶变换(Fourier Transform)是一种将时间域(或空间域)的信号转换为频率域(或波数域)的信号的数学工具。而离散傅里叶变换(Discr
    的头像 发表于 09-07 17:04 1686次阅读

    傅里叶变换的定义 傅里叶变换的意义

    傅里叶变换的定义 傅里叶变换的意义  傅里叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。 在不同的研究领域,傅里叶变换具有多种不同
    的头像 发表于 11-30 15:32 1017次阅读