FFT节省资源的思路
作者:桂。
时间:2017-01-18 23:07:50
链接:http://www.cnblogs.com/xingshansi/articles/6298391.html
前言
FFT是信号处理的常用手段,许多应用场景同时需要两个甚至多个傅里叶变换结果。例如:计算输入信号通过一个系统的输出结果,为了进行快速运算,通常需要利用补零操作使得二者长度相同,并借助FFT实现。许多场景中输入信号以及滤波器冲激响应都为实数,本文主要分析如何通过一个FFT运算同时得出两个实数DFT的结果。
一、利用一组复数FFT实现两组实数FFT
A.模型构造
图1 本文理论的应用场景示意图
应用需求如图1所示,定义新变量$z(n)$:
$z(n)= f(n) + jh(n)$
$z(n)$对应的频域变换为:
$Z(k)=X(k)+jH(k)$
B.理论推导
对于信号$z(n)$以及其共轭信号,
$z(n)=f(n)+jh(n)$
$z^*(n)=f(n)-jh(n)$
对应的频域变换为:
$Z(k)=F(k)+jH(k)$
$Z^*(k)=F(k)-jH(k)$
又信号$z^*(n)$的频域变换存在如下性质,
$DFT(z^*(n))=\sum^{N-1}_{n=0}z^*(n)e^{-\frac{j2\pi kn}{N}}= Z^*(N-k)$
从而由一个FFT运算得到两个FFT结果:
$F(k)=\frac{Z(k)+Z^*(N-k)}{2}$
$H(k)=\frac{Z(k)-Z^*(N-k)}{2j}$
当然输出结果也可以直接得出
$Y(k)=F(k)H(k)=\frac{[Z(k)]^2-[Z^*(N-k)]^2}{4j}$
对于N点的FFT,对应复数乘法个数为:
- 基2FFT:N/2*log2(N)
- 基4FFT:N/2*log2(N)-N
二、复数乘法的变形
对于两个复数:x1 = a+jb; x2 = c+jd:
进一步变形:
可以看出I、Q的第一项是相同的,这样便实现了:复数乘法由4个实数乘法器组成,简化为复数乘法由3个实数乘法器组成。
FFT节省资源的思路的更多相关文章
- 为什么使用LUT比GAL 节省资源
为什么使用LUT比GAL 节省资源 A[1:0] B[1:0] 实现一个比较器,如果A=B输出1 否则输出0 传统的GAL 需要 24= 16个存储单元(ROM)来存储结果数据,实现方法 ...
- AngularJS使用OData请求ASP.NET Web API资源的思路
本篇整理AngularJS使用OData请求ASP.NET Web API资源的思路. 首先给ASP.NET Web API插上OData的翅膀,通过NuGet安装OData. 然后,给control ...
- 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源
转自http://huacnlee.com/blog/use-etag-in-your-rails-app-to-speed-up-loading/ 什么是 ETag 网上关于 ETag 的解释有很多 ...
- 有关AngularJS请求Web API资源的思路
页面部分大致如下: <body ng-app="productManagement"> ... <div ng-include="'app/produc ...
- Xilinx 常用模块汇总(verilog)【01】
作者:桂. 时间:2018-05-07 19:11:23 链接:http://www.cnblogs.com/xingshansi/p/9004492.html 前言 该文私用,不定期更新,主要汇总 ...
- cocos2dx 资源合并.
文件合并之前 文件合并之后 吐槽 我们项目比较奇葩, ui用cocostudio做, 这项光荣的任务由美术接手. 这个美术是个新手, 经过我长时间的观察, 她似乎不用怎么画画. 至少在很长一段时间里, ...
- 2018年美国大学生数学建模竞赛(MCM/ICM) B题解题思路
老套路,把我们在解决B题时候采用的思路分享给大家,希望大家能学到点东西~~~ B题思路整理:Part1:先整理出说某种语言多的十个国家给找出来,或者说是把十种语言对应的国家找出来 然后再对各个国家的人 ...
- 关于FFT的硬件实现
DFT在实际应用中非常重要,可以计算信号的频谱,功率谱和线性卷积等. 离散傅里叶变换的公式: 其中: 称为旋转因子. 由欧拉公式可得: 直接按DFT变换进行计算,当序列长度N很大时,计算量非常大,所 ...
- 【转载】Unity 优雅地管理资源,减少占用内存,优化游戏
转自:星辰的<Unity3D占用内存太大的解决方法> 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D ...
随机推荐
- Elasticsearch cluster health: yellow unassigned shards
查看ES各个分片的状态 $ curl -XGET http://127.0.0.1:9200/_cluster/health?pretty { "cluster_name" : & ...
- Flash:TextField字体不显示/文字不显示/文字丢失
节约大家时间,先说结论: 1.是否文字中包含了\r\n等字符,flash中,\r和\n都会换行.需要过滤掉其中1个 2.是否文本框大小不够,文字被挤到下一行了.设置单行.多行 3.TextFi ...
- django 生成csv文件重要代码
import csv from django.http import HttpResponse # Number of unruly passengers each year 1995 - 2005. ...
- 转 configure: error: Cannot find ldap libraries in /usr/lib 解决办法
今天在centos 6.2 64位版本上安装LNMP,config php的时候出现下面错误而退出 configure: error: Cannot find ldap libraries in /u ...
- loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
转自:http://blog.sina.com.cn/s/blog_13cc013b50102v49c.html(查看原文) 在VuGen中默认使用{}的字符串称为参数 注意:参数必须在双引号中才能用 ...
- RHEL7禁用网卡命名规则
[root@rhel7 ~]# vi /etc/sysconfig/grub GRUB_TIMEOUT= GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g ...
- Windows在cmd杀掉进程
问题描述: 在windows根据pid杀进程 问题解决: tasklist查看当前系统中的进程列表,然后针对你要杀的进程使用taskkill命令 #根据服务名taskkill /im nginx.ex ...
- 【onethink搬家】win环境移植linux环境,注意事项
onethink 搬家注意事项: 修改目录/文件归属和权限,Runtime目录要有可写权限. 若数据库有变动,则需要更改数据库连接参数.在Application/Common/Conf/config. ...
- 持续集成工具jenkins的使用
jenkins类似于Hadson,是一款持续集成工具.使用jenkins完成自动化部署的表现为:当开发人员向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序.搭建 ...
- [转]NLP数据集
原文链接 nlp-datasets Alphabetical list of free/public domain datasets with text data for use in Natural ...