主要内容

傅里叶变换

傅里叶变换是一个数学公式,它将在时间或空间上采样的信号与在频率上采样的相同信号联系起来。在信号处理中,傅里叶变换可以揭示信号的重要特征,即其频率分量。

傅里叶变换是为向量定义的 x 具有 N 均匀采样点

Y K + 1. = J = 0 N - 1. ω J K x J + 1. .

ω = E - 2. π / N 是其中之一 N 联合的复杂根源在哪里 是虚数单位 x Y ,指数 J K 范围从 0 N - 1. .

这个快速傅里叶变换MATLAB®中的函数使用快速傅里叶变换算法计算数据的傅里叶变换。考虑正弦信号x这是时间的函数T频率分量为15 Hz和20 Hz。使用以 1. 50 在10秒的时间内,每秒的。

Ts=1/50;t=0:Ts:10ts;x=sin(2*pi*15*t)+sin(2*pi*20*t);plot(t,x)xlabel('时间(秒)')伊拉贝尔(“振幅”)

图中包含一个轴对象。axes对象包含类型为line的对象。

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

y=fft(x);fs=1/Ts;f=(0:长度(y)-1)*fs/长度(y);

当您将信号的幅值绘制为频率的函数时,幅值中的峰值对应于信号的频率分量15 Hz和20 Hz。

图(f,abs(y))xlabel(‘频率(Hz)’)伊拉贝尔(“震级”)头衔(“震级”)

图中包含一个轴对象。标题大小为的轴对象包含类型为line的对象。

该变换还会产生峰值的镜像副本,对应于信号的负频率FFT换档函数,该函数对变换执行以零为中心的循环移位。

n=长度(x);fshift=(-n/2:n/2-1)*(fs/n);YSShift=FFT换档(y);绘图(fshift,abs(yshift))xlabel(‘频率(Hz)’)伊拉贝尔(“震级”)

图中包含一个轴对象。axes对象包含类型为line的对象。

噪声信号

在科学应用中,信号经常被随机噪声破坏,掩盖其频率成分。傅里叶变换可以处理出随机噪声并揭示频率。例如,创建新信号,X噪声,通过向原始信号中注入高斯噪声,x.

rng(“默认”)xnoise=x+2.5*randn(尺寸(t));

作为频率函数的信号功率是信号处理中常用的度量。功率是信号傅里叶变换的平方幅度,通过频率采样数进行归一化。计算并绘制以零频率为中心的噪声信号的功率谱。尽管存在噪音,但由于功率峰值,您仍然可以分辨出信号的频率。

ynoise=fft(xnoise);ynoiseshift=fftshift(ynoise);power=abs(ynoiseshift)。^2/n;绘图(fshift,power)标题(“权力”)xlabel(‘频率(Hz)’)伊拉贝尔(“权力”)

图中包含一个轴对象。具有标题权限的Axis对象包含类型为line的对象。

计算效率

直接使用傅里叶变换公式计算每个 N 元素 Y 要求 N 2. 浮点运算。快速傅里叶变换算法只需要 N 日志 N 计算操作。这种计算效率在处理具有数百万个数据点的数据时是一个很大的优势。当 N 是2的幂。

考虑从加利福尼亚海岸的水下麦克风收集的音频数据。康奈尔大学生物声学研究项目. 在中加载并格式化数据的子集蓝鲸,其中包含太平洋蓝鲸的发声。因为蓝鲸的叫声是低频声音,人类几乎听不见。数据中的时间刻度被压缩10倍,以提高音调并使呼叫更清晰。您可以使用该命令声音(x,fs)收听整个音频文件。

捕鲸船=“蓝鲸,au”; [x,fs]=音频读取(WhalFile);Whalemaan=x(2.45e4:3.10e4);t=10*(0:1/fs:(长度(Whalemaan)-1)/fs);图(t,捕鲸)xlabel('时间(秒)')伊拉贝尔(“振幅”)xlim([0 t(结束)])

图中包含一个轴对象。axes对象包含类型为line的对象。

指定比原始长度大2的下一次幂的新信号长度。然后,使用快速傅里叶变换使用新的信号长度计算傅里叶变换。快速傅里叶变换自动用零填充数据以增加样本大小。这种填充可以使变换计算大大加快,特别是对于具有大素数因子的样本大小。

m=长度(whaleMoan);n=功率2(nextpow2(m));y=fft(whaleMoan,n);

绘制信号的功率谱图。该图表明,moan由17 Hz左右的基频和一系列谐波组成,其中强调了二次谐波。

f=(0:n-1)*(fs/n)/10;%频率矢量功率=绝对值(y)。^2/n;%功率谱地块(f(1:楼层(n/2)),电源(1:楼层(n/2)))xlabel(‘频率(Hz)’)伊拉贝尔(“权力”)

图中包含一个轴对象。axes对象包含类型为line的对象。

另见

||||||

相关话题