主要内容

傅里叶变换

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

傅立叶变换为矢量定义 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

FFT.Matlab®中的功能使用快速傅里叶变换算法来计算数据的傅立叶变换。考虑正弦信号X这是时间的函数T.频率分量为15 Hz和20 Hz。使用以增量采样的时间向量 1 50. 在10秒的时间内一秒钟。

ts = 1/50;T = 0:TS:10-TS;X = SIN(2 * PI * 15 * T)+ SIN(2 * PI * 20 * T);plot(t,x)xlabel('时间(秒)')ylabel('振幅'

图包含轴。轴包含类型线的对象。

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

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

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

绘图(F,ABS(Y))XLabel('频率(Hz)')ylabel('震级') 标题('震级'

图包含轴。具有标题大小的轴包含类型线的对象。

变换还产生尖峰的镜像副本,其对应于信号的负频率。要更好地可视化这个周期,可以使用FFTSHIFT.功能,执行零居中的循环移位。

n =长度(x);fshift =(-n / 2:n / 2-1)*(fs / n);Yshift = FFTSHIFT(Y);绘图(FSHIFT,ABS(YSHIFT))XLABEL('频率(Hz)')ylabel('震级'

图包含轴。轴包含类型线的对象。

嘈杂的信号

在科学应用中,信号通常损坏随机噪声,伪装其频率分量。傅里叶变换可以处理随机噪声并揭示频率。例如,创建一个新信号,Xnoise.,通过将高斯噪声注入原始信号,X

RNG('默认')Xnoise = x + 2.5 * randn(尺寸(t));

信号功率作为频率的函数是信号处理中使用的公共度量。功率是信号傅立叶变换的平方幅度,由频率样本的数量标准化。计算并绘制以零频率为中心的噪声信号的功率谱。尽管有噪音,但由于电源的尖峰,您仍然可以制定信号的频率。

ynoise = fft(xnoise);ynoiseshift = fftshift(ynoise);power = abs(ynoiseshift)。^ 2 / n;情节(FSHIFT,POWER)标题('力量')xlabel('频率(Hz)')ylabel('力量'

图包含轴。具有标题功率的轴包含类型线的对象。

计算效率

使用傅立叶变换公式直接计算每个 N 要点 y 需要按顺序 N 2 浮点操作。快速的傅里叶变换算法只需要按照顺序 N 日志 N 计算要计算的操作。当处理具有数百万个数据点的数据时,这种计算效率是一个很大的优势。快速傅里叶变换算法的许多专用实现甚至更有效 N 是一个2的力量。

考虑从加利福尼亚州海岸的水下麦克风收集的音频数据。该数据可以在维护的库中找到康奈尔大学生物理学研究计划。加载和格式化数据的子集bluewhale.au.,其中包含太平洋蓝鲸发声。因为蓝鲸叫是低频声音,所以它们对人类几乎听不释。数据中的时间尺度由10倍的压缩,以提高音调并使呼叫更清晰可听。您可以使用该命令声音(x,fs)收听整个音频文件。

鲸鱼队='bluewhale.au';[x,fs] = audioread(尾离);whalemoan = x(2.45e4:3.10e4);T = 10 *(0:1 / FS :(长度(尾剂)-1)/ fs);图(T,Whalemoan)Xlabel('时间(秒)')ylabel('振幅')xlim([0 t(end)])

图包含轴。轴包含类型线的对象。

指定一个新的信号长度为2大于原始长度的下一个功率。然后,使用FFT.使用新的信号长度计算傅立叶变换。FFT.使用零填充数据以增加样本大小。该衬垫可以明显更快地使变换计算,特别是对于具有大型主要因素的样本尺寸。

m =长度(Whalemoan);n = pow2(nextpow2(m));Y = FFT(Whalemoan,N);

绘制信号的功率谱。该曲线表明,呻吟包括大约17 Hz的基频和一系列谐波,其中强调了第二次谐波。

f =(0:n-1)*(fs / n)/ 10;%频率矢量power = abs(y)。^ 2 / n;%功率谱绘图(F(1:地板(N / 2)),功率(1:地板(N / 2)))XLabel('频率(Hz)')ylabel('力量'

图包含轴。轴包含类型线的对象。

也可以看看

||||||

相关话题