请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4776|回复: 2
收起左侧

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

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2015-4-14 11:01:30 | 显示全部楼层 |阅读模式
特别说明:完整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,可以用下面的方法:
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;          %真实的频率

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.png

从上面的转换结果看,两个波形信号基本是一致的。

29.3 总结
    本章节内容较少,有兴趣的可以尝试在原FFT库的基础上实现IFFT。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2022-5-17 15:58:25 | 显示全部楼层
大神,有无不限制点数的IFFT现成的代码
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105917
QQ
发表于 2022-5-18 00:27:43 | 显示全部楼层
aa王同庆 发表于 2022-5-17 15:58
大神,有无不限制点数的IFFT现成的代码

STM32H7的不限制点数FFT章节教程发布(2021-06-28)
https://www.armbbs.cn/forum.php? ... 7591&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-3-29 01:41 , Processed in 0.158878 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表