
特别说明:完整45期数字信号处理教程,原创高性能示波器代码全开源地址:链接 第29章 ST官方汇编FFT库实现IFFT 本章主要讲解利用ST官方汇编FFT库实现IFFT,但由于官方的FFT库输入和输出参数都是由信号的实部和虚部两个16位的数据组成一个32位数据进行操作,在利用FFT库进行IFFT计算的过程中很容易溢出,所以本章节仅提供Matlab的实现思路。 29.1 利用FFT库实现IFFT的思路。 29.2 Matlab实现验证 29.3 总结。 29.1 利用FFT库实现IFFT的思路 如果希望直接调用FFT程序计算IFFT,可以用下面的方法: ![]() 对上式两边同时去共轭,得: ![]() 简单的说就是先对原始信号做FFT变换,然后对转换结果取共轭,再次带到FFT中计算,并将结果再次取共轭就可以实现IFFT。 29.2 Matlab实现验证 根据上面小节的实现思路,我们在Matlab上面做一个验证,验证代码如下: Fs = 1024; % 采样率 N = 1024; % 采样点数 n = 0:N-1; % 采样序列 t = 0:1/Fs:1-1/Fs; % 时间序列 f = n * Fs / N; %真实的频率 x = 1.5*sin(2*pi*20*t+pi/3) ; %原始信号 y = fft(x, N); %对原始信号做FFT变换 z = conj(y); %对转换结果取共轭 subplot(2,1,2); z = fft(z, N); %再次做FFT k = conj(z); %对转换结果去共轭 plot(f, real(k)); %绘制转换后的波形 title('IFFT转换后的波形'); subplot(2,1,1); plot(f, x); %绘制原始波形 title('原始波形'); Matab的运行结果如下: ![]() 从上面的转换结果看,两个波形信号基本是一致的。 29.3 总结 本章节内容较少,有兴趣的可以尝试在原FFT库的基础上实现IFFT。 |
标记学习 |
谢谢分享
![]() |