你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【安富莱——DSP教程】第29章 ST官方汇编FFT库实现IFFT

[复制链接]
baiyongbin2009 发布时间:2015-4-14 11:06
特别说明:完整45期数字信号处理教程,原创高性能示波器代码全开源地址:链接
7 g" I; J+ L8 y* s/ S, z
第29章 ST官方汇编FFT库实现IFFT
2 W$ y+ p( }) a1 S
    本章主要讲解利用ST官方汇编FFT库实现IFFT,但由于官方的FFT库输入和输出参数都是由信号的实部和虚部两个16位的数据组成一个32位数据进行操作,在利用FFT库进行IFFT计算的过程中很容易溢出,所以本章节仅提供Matlab的实现思路。
    29.1 利用FFT库实现IFFT的思路。
    29.2 Matlab实现验证
    29.3 总结。
0 V9 ]9 c9 n- B3 Y' X- i6 V; N2 U
29.1 利用FFT库实现IFFT的思路
    如果希望直接调用FFT程序计算IFFT,可以用下面的方法:
29.1.png
    对上式两边同时去共轭,得:
29.2.png
简单的说就是先对原始信号做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;          %真实的频率
3 j: m0 b2 y3 _! p! A( }0 w( w4 Y
, d% |6 f% v: e+ _& ]
x = 1.5*sin(2*pi*20*t+pi/3) ;  %原始信号
y = fft(x, N);    %对原始信号做FFT变换
z = conj(y);     %对转换结果取共轭

' n0 q  t* q4 [& e  E6 R* G, L3 S+ o& ~, d  E. s! e
subplot(2,1,2);
z = fft(z, N);     %再次做FFT
k = conj(z);      %对转换结果去共轭
plot(f,  real(k));  %绘制转换后的波形
title('IFFT转换后的波形');

: S& v/ s% ^" A
, ]! ]+ ]% r* X5 v1 \+ N4 A7 L3 d
subplot(2,1,1);
plot(f,  x);       %绘制原始波形
title('原始波形');
     Matab的运行结果如下:
29.3.png
从上面的转换结果看,两个波形信号基本是一致的。
29.3 总结
    本章节内容较少,有兴趣的可以尝试在原FFT库的基础上实现IFFT。

: B: A( e; A- a8 A0 U( F
赞 收藏 2 评论3 发布时间:2015-4-14 11:06

举报

3个回答
wamcncn 回答时间:2015-4-14 12:32:35
标记学习
wu1169668869 回答时间:2015-4-14 14:52:54
谢谢分享 9.gif
wyxy163@126.com 回答时间:2015-4-14 16:51:15
提示: 作者被禁止或删除 内容自动屏蔽
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版