稀疏傅里叶变换(sparse FFT)

作者:桂。

时间:2018-01-06  14:00:25

链接:http://www.cnblogs.com/xingshansi/p/8214122.html 


前言

  对于数字接收来讲,射频域随着带宽的增加,AD、微波、FPGA资源的需求越来越高,但频域开的越宽并不意味着频谱越宽,有限信号内可认为信号在宽开频域稀疏分布,最近较为流行的稀疏FFT(SFFT)是在传统FFT的基础上,利用了信号的稀疏特性,使得计算性能优于FFT。本文简单记录自己的理解。

源代码

一、稀疏FFT

主要是12年MIT的论文:Simple and Practical Algorithm for Sparse Fourier Transform。

核心思想:

SFT 作为这样一种“输出感知”算法,其核心思路是按照一定规则 Γ ( • )将信号频点投入到一组“筐”中(数量为 B,通过滤波器实现 ) . 因频域是稀疏的,各大值点将依很高的概率在各自的“筐”中孤立存在 . 将各“筐”中频点叠加,使 N 点长序列转换为 B点的短序列并作 FFT 运算,根据计算结果,忽略所有不含大值点的“筐”,最后根据对应分“筐”规则,设计重构算法 Γ -1 ( • )恢复出 N 点原始信号频谱。

算法流程:

步骤一:选定一个sigma,实现数据频域重排。

频域重排主要是因为FFT之后,频域大值集中在一起,需要将这一伙打散,保证频域的稀疏性(sparse)。打散之后就能稀疏,依据定理(可见n越大,打散的可能性越大,从这里看,sigma与B还是有关系的,sigma体现了相邻频点的最小间隔,而B决定了每个bucket的宽度):

这里是按一定概率(概率性)将频谱重排,MIT重排思路:

对应代码:

fs = 1000;
f0 = 70;
N = 256;
t = [0:N-1]/fs;
x = exp(1j*2*pi*t*f0) ;
%%*************Step1:频谱随机重排**************
sigma = 19; %inv(sigma) = 27
tao = 3;
%permutation
perm_num = mod([1:N]*sigma+tao,N)+1;
pn = x(perm_num);

  当然也有强制(确定性)将数据重排的思路,思路类似,只是实现方式不同:

sigma的选择主要利用性质:

这里sigma^-1是sigma关于模N的逆元(数论倒数)。该点主要说明:变化前后的完备性(信号可重建)。

 步骤二:加窗。

 这里根据筐的多少(B),平分2pi频域,即带宽2pi/B,理想窗函数为矩形窗,但时域为无限长的sinc函数,需要加窗截断,可选择gausswin。

即win = sinc.*gausswin:

这里不局限于gausswin,满足给定约束的窗函数均可:

步骤三:频域抽取并作FFT

加窗之后,保证了频谱不至于展宽严重,进一步保证了稀疏性。频域降采样:

等价于时域的混叠的傅里叶变换:

故直接在时域进行处理。处理完成后进行FFT运算。

该操作的理论基础为:

不谈加窗操作,x->p->y,可以看出x与y存在映射关系,而y的∑操作可以转化为并行,这样一来可以用多个低速率AD实现一个高速率AD的功能,前提是多个AD需要完全同步。

与上述降速率思想等价的是:如果各AD可做好同步,则多个现有AD的能力,可以做出现有AD难以完成的事。

步骤四:哈希映射

哈希映射的线索为:最终观察的数据Y(k)【即y(n)】->P(k)【即p(n)】->X(k)【即x(n)】:

第一步(y -> p)转化的理论依据:

第二步(p -> x)转化的理论依据:

序列重排后的频域变换为:

这两步解释了算法step4的参数定义:

但实际中并非第一步提到的理想情况,实际情况是:

因此存在一个频谱重建的成功概率问题:

 4章节的后半部分主要在证明这个概率问题。

步骤五~六的主要目的,引用原文的说法:

  Here are two versions of the inner loop: location loops and estimation loops. Location loops are given a parameter d, and output a set I ⊂ [n] of dkn/B  coordinates that contains each large coefficient with“good” probability. Estimation loops are given a set  I ⊂ [n] and estimate x I such that each coordinate is  estimated well with “good” probability.

 步骤五:定位循环

 d是一个参数,存在约束

原文取值为:

 该步骤的主要操作为:

将 Z ( k )中 dK 个较大值(从大到小依次排列)的坐标( k)归入集合 J 中,通过哈希反映射得到 J 的原像:

这样便得到包含原始频谱坐标的集合,迭代L次:

迭代的目的?

 

步骤六:估值循环

 对于每个k∈Ir,计算频率信息:

步骤5~6主要操作:

至此完成了稀疏FFT(sparse FFT)的整个运算过程,记作sfft_v01。

改进版都是依次大框架进行,不同点主要有三个方面:1)重排的实现思路;2)频谱的重建思路。不再一一展开。 

原文示例

该示例给出了步骤5~6的直观解释:

 

二、问题记录

仿真验证:n = 256点频信号,sigma = 19,则inv_sigma = 27,假设生成点频信号:

图1为重排的信号,图2为重排加窗(此处窗不够理想,看到长尾,论文中强调加窗,作用在于把尾巴剁掉。),图3为原始信号频谱,图4为降采样之后的频谱。可以看出重排容易引入谐波:以sigma为周期。  

原始频谱位置为k=10-1 = 9(下标从0开始),重排后对应频谱位置为mod(sigma*k,n) = 171 = 172-1,与理论分析一致。即原始k点重排后位置:

 即时域信号,x(n),重排序号perm_num = mod([1:n]*sigma,n)+1,则对应重排后的傅里叶变换,频谱顺序与原信号频谱X,经过重排序号perm_num1 =  mod([1:n]*inv_sigma,n)+1,位置始终相差1(数论倒数的性质决定):mod(sigma*inv_sigma,n)=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

截图小妙招

截图小妙招 第一步:先右键,建立一个文本 第二步:修改名称和后缀(截图.bat) 第三步:右击 选择编辑,输入start snippingtool 保存。 第四步:双击,选择模式下的矩形就可…

马云最怕的事还是来了,央行对借呗动真格!

借呗已经推出深受大欢迎,截止2017年3月,借呗已经向1200万用户借款,累计放款3000亿,估计到了2017年底,借呗的放款额度很有可能超过5000亿元。借呗火爆,马云也是赚的盘满钵满,数据显示&#xff0c…

pthread 线程退出时自动释放资源

线程退出时自动释放资源 今天碰到一个问题:主线程pthread_create一个子线程A,子线程pthread_mutex_lock,然后调用其他的函数fun,最后从fun返回后再pthread_mutex_unlock. 但是如果在fun中调用了pthread_exit异常退出,那么岂不是没释放锁就退出了,这肯定会引起死锁. 解决办法一…

逃离迷茫和枯燥,让自己快乐起来

-1-2017年末,佛系青年一词刷爆朋友圈,它跟宗教没有任何关系,代表一种怎么都行、不大走心、看淡一切的活法。佛系青年最喜欢的三个词就是就是:可以,都行,没关系。佛系青年口头禅快节奏的社会,压力…

电脑小技巧

电脑小技巧 第一个:修复旧电脑 winR(注意勾选管理权限创建此任务)然后输入cmd 输入chkdsk,然后回车 然后输入sfc/scannow,回车 在winr,然后输入%temp%,全选删除。 截图 windowshifts:任意截图。…

工程应用中的自相关操作

作者:桂。 时间:2018-01-10 18:41:05 链接:http://www.cnblogs.com/xingshansi/p/8260315.html 前言 主要记录工程应用中的自相关操作,以及自相关的一些理论性质。 代码实现可参考:Xilinx 常用模块汇总(verilog)【03…

Ubuntu 18.04 LTS环境下 MNN 的编译与使用

环境 Ubuntu 18.04 LTS 本文主要介绍从github上下载 MNN 后,如何快速的进行编译 1.安装C/C编译器 gcc 与 NDK #首先安装好gcc, 用来编译 MNN 中的工具等内容 sudo apt install build-essential gcc --version #其次, 安装NDK或者安装Android Studio, 然后安装NDK插件, #在h…

深圳多管齐下破解“融资难”

来源:深圳特区报 2018年01月09日 版次:A13■ 深圳特区报记者 沈勇 文/图“原来只能贷款850万元,后来却顺利地贷到1100万,而且利息并不高。”深圳一家高新技术企业的丁先生对自己在深圳某贷款服务公司的融资体验赞不绝口&#xff0…

建立时间和保持时间的模型分析

建立时间和保持时间的模型分析 起点是源触发器D1的采样时刻,终点是目的触发器D2的采样时刻,假设起点已经满足了建立时间和保持时间要求,现在分析终点采样时刻是否同样满足要求。 其中 Tco:数据正确采样后从D端到达Q端的延时,触发器固有属性,不可改变。TDelay:D1输出端…

虚拟机Ubuntu18.04 root下 连接 windows 中 winScp

Windows 下通过 WinSCP 和 Ubuntu 18.04 连接传输文件 基本原理是Windows下使用 ssh/scp 协议客户端软件WinSCP, Linux/Ubuntu 系统开启ssh/scp协议server服务. 先查看自己Linux/Ubuntu中是否有 ssh服务 如果没有的话先安装 apt-get install openssh-server安装完之后 先手…

年关节点,小心这9大贷款骗局

准备过年了,骗子也出来活动了,作为骗钱的高发区,贷款诈骗就是诈骗团伙重点盯住的肥肉。大家近段是否会经常接收到这样的短信:“银行贷款快速办理”、“无需抵押”、“当天放款”……岁末年初,此类推荐贷款的骚扰电话与…

全民熬夜的时代,如何做到早睡?

-1-2018,给自己定了一个小目标:坚持早睡。翻看2017年早睡的打卡记录,坏消息是有近一半的时间都超过11点入睡,而好消息就是,我每月早睡的完成率在稳步提升。改变要从暑假说起,那段时间自己状态很差&#xff…

电机的简介

电机的简介 通电导体在磁场中受到力的作用–安培力 洛仑磁力的合力。

编译Android版本TensorFlow

在Ubuntu 18.04 LTS 下编译Tensorflow的Android库的步骤: 安装Android Studio/Android sdk安装Android NDK(Android NDK可以单独安装也可以通过Android Studio的SDK插件安装, 怎么安装略)安装 能够编译Tensorflow的对应版本的Bazel, TensorFlow和 Bazel 有对应关系…

银监会周末突发4号文件,18年贷款比想象的要难

2018年1月13日,星期六,当大家都还在过周末的时候,银监会突然印发了《关于进一步深化整治银行业市场乱象的通知》(以下简称《通知》),通知要求在全国范围内进一步深化整治银行业市场乱象,切实巩固…

FPGA内部硬件结构与代码的关系

FPGA内部硬件结构与代码的关系 I/O的映射 给一个输入信号,然后不进行任何逻辑运算直接输出。 module line(input wire in,output wire out);assign out = in; endmodule组合逻辑的映射 module line(input wire in1,input wire in2,output wire out);assign out = in1 &a…

消费金融资金断流,银行抽贷、通道暂停,P2P离场

最近消费金融发展可谓焦躁不安,监管加压,资金断流,客户流失、逾期飙升,来自各方面的压力,让消费金融,特别是现金贷的出路前途未卜。01消费金融在中国有点水土不服消费金融在我国的发展是最近几年才兴起的&a…

SKF密码设备研究

密码设备 mToken GM3000 国密身份认证锁是龙脉科技自主研发设计支持国密算法、完全遵照国家密码管理局颁布的《智能IC卡及智能密码钥匙密码应用接口规范》要求设计的USB Key,采用国产高性能智能卡芯片,内置SSF33、SM1、SM2、SM3、SM4等国产算法&#xf…

微信礼仪测试,你能及格吗?

插图:annie.Z“群主,我可以打个广告吗?”还没等我回复,对方已经把自己产品的介绍丢在了微信群。提醒他撤回,刚刚还在发信息的他突然不见了。2分钟后又出现,“不好意思啊群主,超过2分钟不能撤回了…

AMBA总线介绍

AMBA总线介绍 系统总线简介 系统芯片中各个模块之间需要要有接口来连接 总线作为子系统之间共享的通信链路 优点:低成本,方便易用 缺点:会造成性能颈瓶 AMBA:Advanced Microcontroller Bus Architecture。片总线的标准 定义了三…