文本阅读:
232第9章傅里叶分析与重合成
9.7示例
9.7.1Pd中的傅里叶分析与重合成
示例101.Fourier.analysis.pd(图9.14a)演示的是使用fft~对象计算一个音频信号的傅里叶变换:
【rft~:快速傅里叶变换。2个输入口获取音频信号,它们分别代表一个复值信号的实部和虚部。窗尺寸N由Pd的块尺寸给出。每个块进行一次傅里叶变换。
快速傅里叶变换(FFT)【S103】降低了Pd中傅里叶分析的计算代价,在典型的配置中,这个代价降低到仅有5至15个osc~对象。FFT算法的最简单形式要求选取2的幂次作为N,这也(通常)是Pd对块尺寸的一个限制要求。
示例102.Hann.window.pd(图9.14b和图9.14c)所示为如何使用一个block~对象控制块尺寸,如何施加一个汉宁窗,以及另外一个版本的傅里叶变换。图9.14b展示了一个子窗口的调用,该子窗口如图9.14c所示。这里的新对象是:
oac~
b1ock~512|
inlet-
tabwrite~$0-imaginary tabreceive-$0-hann
Itabwrites $0-reall
(a)
Irfft~
频率(十分之几赫兹)
08c|点击查看
|sgrt~
pd fft-analysie
tabwrite-$0-magnitude
(c)
|图9.14Pd中的傅里叶分析:(a)fft~对象;(b)使用一个子窗口来控制傅里叶变换的块尺寸;(c)子窗口,使用了一个实傅里叶变换(rfft~对象)和一个汉宁窗函数Lrfft~:实快速傅里叶变换。输入的虚部被假设为0。输出中仅有前N/2+1个频道被填充(其他频道可根据对称性得出)。其计算时间为(更普通的)ft~对象所用时间的一半。
tabreceive~:反复输出一个波表的内容。每个块的计算输出的都是该波表的前N个样点。