傅里叶变换
傅里叶变换是一个数学公式,它将一个信号采样时间和空间相同的信号采样时间或空间频率。在信号处理中,傅里叶变换可以揭示信号的重要特征,即它的频率成分。
傅里叶变换定义为一个向量 与 均匀采样点的
是其中一个 复根的统一 虚数单位。为 和 的指标 和 范围从 来 。
的fft
函数在MATLAB®使用快速傅里叶变换算法来计算数据的傅里叶变换。考虑一个正弦信号x
这是一个时间的函数t
15赫兹的频率成分和20 Hz。使用矢量采样时间增量的1/50秒的时间10秒。
Ts = 1/50;t = 0: Ts: 10-Ts;x =罪(2 *π* 15 * t) +罪(2 *π* 20 * t);情节(t, x)包含(的时间(秒))ylabel (“振幅”)
计算信号的傅里叶变换,并创建向量f
对应于信号的采样频率空间。
y = fft (x);fs = 1 / Ts;f =(0:长度(y) 1) * fs /长度(y);
当你情节的大小信号作为频率的函数,的大小对应于峰值信号15赫兹和20赫兹的频率成分。
情节(f, abs (y))包含(的频率(赫兹))ylabel (“级”)标题(“级”)
转换也产生一个峰值的镜像拷贝,这对应于信号的负频率。为了更好地可视化这个周期性,可以使用fftshift
函数,它执行一个zero-centered,圆形转变的变换。
n =长度(x);fshift = (- n / 2: n / 2 - 1) * (fs / n);yshift = fftshift (y);情节(fshift、abs (yshift))包含(的频率(赫兹))ylabel (“级”)
噪声信号
在科学应用,信号与随机噪声经常损坏,伪装自己的频率成分。傅里叶变换可以处理随机噪声和揭示了频率。例如,创建一个新的信号,xnoise
将高斯噪声注入原始信号,x
。
rng (“默认”)xnoise = x + 2.5 * randn(大小(t));
信号功率作为频率的函数是一种常见的指标用于信号处理。权力是平方级信号的傅里叶变换,归一化频率的数量样品。计算和绘制噪声信号的功率谱集中在零频率。尽管噪音,你仍然可以保留信号的频率的峰值功率。
ynoise = fft (xnoise);ynoiseshift = fftshift (ynoise);功率= abs (ynoiseshift)。^ 2 / n;情节(fshift、电力)标题(“权力”)包含(的频率(赫兹))ylabel (“权力”)
计算效率
使用傅里叶变换公式直接计算的 的元素 需要的 浮点操作。快速傅里叶变换算法只需要的 操作来计算。这个计算效率是一个很大的优势在处理数据时数百万数据点。许多专业的快速傅里叶变换的实现算法时更有效 小主要因素,如 是2的幂。
考虑音频数据收集从加利福尼亚海岸的水下麦克风。在图书馆可以找到这些数据维护的康奈尔大学生物声学研究计划。负载和格式数据的一个子集bluewhale.au
,其中包含一个太平洋蓝鲸发声。因为蓝鲸调用低频声音,他们几乎听不见的人。被压缩的数据的时间范围10倍提高音调和打电话更清晰可闻。您可以使用命令声音(x, fs)
听整个音频文件。
whaleFile =“bluewhale.au”;[x, fs] = audioread (whaleFile);whaleMoan = x (2.45 e4:3.10e4);t = 10 * (0:1 / fs: ((whaleMoan) 1)长度/ fs);情节(t, whaleMoan)包含(的时间(秒))ylabel (“振幅”)xlim ([0 t(结束)))
指定一个新的信号长度,是下一个2的力量大于原来的长度。然后,用fft
使用新的信号傅里叶变换计算长度。fft
自动垫增加样本容量为0的数据。填充可以变换计算更快,尤其是对样本量大主要因素。
m =长度(whaleMoan);n = pow2 (nextpow2 (m));y = fft (whaleMoan n);
信号的功率谱。情节表明呻吟包括基本频率大约17赫兹和序列的谐波,二次谐波的强调。
f = (0: n - 1) * (fs / n) / 10;%频率向量功率= abs (y)。^ 2 / n;%功率谱情节(f(1:地板(n / 2))、电力(1:地板(n / 2)))包含(的频率(赫兹))ylabel (“权力”)
阶段的正弦曲线
使用傅里叶变换,也可以提取原始信号的相位谱。例如,创建一个包含两个正弦信号的频率的信号15赫兹和40 Hz。第一个正弦信号相位的余弦波 ,第二个是相位的余弦波 。样品在100赫兹的信号1秒。
fs = 100;t = 0:1 / fs: 1 - 1 / f;x = cos(2 *π* 15 * t -π/ 4)- sin(2 *π* 40 * t);
计算信号的傅里叶变换。情节的大小变换作为频率的函数。
y = fft (x);z = fftshift (y);ly =长度(y);f =(以某方式/ 2:ly / 2 - 1) / ly * fs;茎(f, abs (z))包含(“频率(赫兹)”)ylabel (“y | |”网格)
计算转换的阶段,消除较小变换值。绘制阶段作为频率的函数。
托尔= 1 e-6;z (abs (z) < tol) = 0;θ=角(z);茎(f,θ/π)包含(“频率(赫兹)”)ylabel (“阶段/ \π”网格)
另请参阅
fft
|fftshift
|nextpow2
|传输线
|fft2
|fftn
|fftw