曹逸君 Blog

12月 22, 2013

快速傅里叶变换--用于变调

快速傅里叶变换--用于变调

快速傅里叶变换–用于变调

曹逸君 张思雨

PS:用于交线性代数报告,线代的应用。

对傅里叶变换的理解

看了视频课、各种博文。对傅里叶变换(FFT)理解如下:
傅里叶变换有各种变体,
1. 非周期性连续信号 傅立叶变换(Fourier Transform)
2. 周期性连续信号 傅立叶级数(Fourier Series)
3. 非周期性离散信号 离散时域傅立叶变换(Discrete Time Fourier Transform)
4. 周期性离散信号 离散傅立叶变换(Discrete Fourier Transform)
图示各变体

实际信号处理中,都是用的离散傅立叶变换(DFT),因为计算机能处理得只能是离散得值。

快速傅里叶变换(FFT)则是将傅里叶变换的时间复杂度降至nlog(n)的改进算法。

傅里叶变换总的来说是将函数从基于时域和频域得相互转换得变换。
或者说成将任意(连续周期,数学上得要求,实际操作上可以对任意数据进行。)函数分解为多个正余弦函数。

傅里叶矩阵与傅里叶变换

复矩阵

  1. 复向量的模 复向量 zCn 其模 |z|=zHz=z¯Tz
    zH表示对向量z的转置并共轭,H代表埃尔米特Hermite

  2. 复向量的内积:xHy

  3. 埃尔米特矩阵:AH=AA是实矩阵时,即为对称矩阵。

  4. 对称矩阵和埃尔米特矩阵的特征值是实数,特征向量相互垂直。

  5. 复矩阵正交称为酉矩阵(unitary),有QHQ=IQ1=QH

傅里叶矩阵

Fn=1111111ww2w3w(n1)1w2w4w6w2(n1)1w3w6w9w3(n1)1wn(n1)1w(n1)w2(n1)w3(n1)wn(n1)w(n1)2
傅里叶矩阵是个特殊的酉矩阵。其中w满足wn=1。用复指数表示为w=ei2πn。PS:上帝公式eiπ=1

将原始数据向量左乘傅里叶矩阵就完成了傅里叶变换。
左乘傅里叶矩阵的逆矩阵A1=AH就是傅里叶逆变换。

快速傅里叶变换(FFT)

由于傅里叶矩阵各列正交。又呈实矩阵那样得对称性。故可以将其分解。

(F64)=(IIDD)(F3200F32)(P)

P是奇偶置换矩阵。D=1ww2w31。并且w32=w642

如上分解可以迭代下去到一阶傅里叶矩阵。而计算量也由n2降为12nlog(n)

快速傅里叶变换用于变调

过程如下:将音频采样(振幅对于时间得函数上得点)通过快速傅里叶变换转为不同频率声音的振幅分布。
然后就可以方便的对不同频率进行操作了。比如这里我们将整个频率调高/调低(变得像女声/男声)。
然后再通过逆傅里叶变换转换回振幅对于时间的分布数据。
小块示例-音频频谱

图中蓝色为原始音频通过傅里叶变换得到的频谱。[横轴为频率,纵轴为振幅。]
绿色的是整体提升频率后得频谱。
绿色整体被拉长,表明频率整体升高。同时振幅整体缩小。[衰减2Db以降噪。]

小块示例-音频波形

上图蓝色为原始音频的波形图,[横轴为时间,纵轴为振幅。]
可以看到时间长度未变。频率却升高了。[波峰更加密集]

以上两图是1.25秒长度得小块数据,挑了两个比较清楚得。

源码和文件将和文档一起打包。
在Github上

全部文档和源码遵守CC协议。
知识共享许可协议
快速傅里叶变换–用于变调曹逸君,张思雨 创作,采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。

引用:
Numpy fft 手册
快速傅里叶变换将歌曲变调
介绍FFT的博文
MIT线性代数公开课,复数矩阵和快速傅里叶变换
线性代数导论27——复数矩阵和快速傅里叶变换,笔记

Written with StackEdit.