Matlab实现傅里叶变换的步骤

傅里叶变换是将按时间或空间采样的信号与按频率采样的相同信号进行关联的数学公式。在信号处理中,傅里叶变换可以揭示信号的重要特征(即其频率分量)。
对于包含 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);figureplot(t,x)
计算信号的傅里叶变换,并在频率空间创建对应于信号采样的向量 f。
y = fft(x); f = (0:length(y)-1)*50/length(y);以频率函数形式绘制信号幅值时,幅值尖峰对应于信号的 15 hz 和 20 hz 频率分量。
figureplot(f,abs(y))title('magnitude')
该变换还会生成尖峰的镜像,对应于信号的负频率。为了更好地以可视化方式呈现周期性,使用 fftshift 函数对变换执行以零为中心的循环平移。
n = length(x); fshift = (-n/2:n/2-1)*(50/n);yshift = fftshift(y);figureplot(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; figureplot(fshift,power)title('power')
计算效率直接使用傅里叶变换公式分别计算 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);figureplot(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 vectorpower = abs(y).^2/n; % power spectrum figureplot(f(1:floor(n/2)),power(1:floor(n/2)))xlabel('frequency')ylabel('power')

为了工程师,彻底改写测试测量格局,也真是够拼了!
无刷直流电机(BLDC)构成、应用领域及工作原理详解
箱体的Q值,箱体的Q值是什么意思
僵尸网络或将通过智能家居设备从而操纵能源需求
信号转换器的特点 信号转换器的使用事项
Matlab实现傅里叶变换的步骤
怎样将遥控汽车转换为自动汽车
霸菱科技智能门锁_ID-5003简介
OPPO Reno3系列带来全新视频超级双防抖特性,取景面积增大87%
Summit Tech推出VRCalling产品,2018移动世界大会上展示VR视频通话
Firefox新版引擎JaegerMonkey采纳苹果Web
X射线在行李安检扫描中的应用
米尔科技MYD-SAMA5D3X开发板 概述
村田超小尺寸的编码器开关micro ES即将量产亮相深圳国际电子展
VHDL的基本描述语句设计
中国3D打印的崛起,机遇与挑战并存
云从科技AI智慧防疫检测系统助力抗疫行动
CEVA-Dragonfly NB2交钥匙解决方案获得德国电信网络认证
虹软CEO邓晖:站在AI的风口,坚持持续创新
虚拟现实系统的六个组成部分