码迷,mamicode.com
首页 > 其他好文 > 详细

稀疏傅里叶变换(sparse FFT)

时间:2018-01-06 15:53:02      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:ext   alt   流行   就是   www.   直接   基础上   isp   时间   

作者:桂。

时间: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)。sigma的选择主要利用性质:

技术分享图片

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

 步骤二:加窗。

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

即win = sinc.*gausswin。

步骤三:频域抽取并作FFT

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

技术分享图片

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

技术分享图片

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

该操作的理论基础为:

技术分享图片

步骤四:哈希映射

 主要就是(4)~(6)的操作,这个就比较直观了。 

code(仅供参考)

clc;clear all;close all;
%%*************Step0:生成信号**************
fs = 1000;
f0 = 100;
N = 256*256;
t = [0:N-1]/fs;
x = exp(1j*2*pi*t*f0);
%%*************Step1:频谱随机重排**************
sigma = 19; %inv(sigma) = 27
pn = [];
for i = 1:sigma
    data = x(i:sigma:end);
    pn = [pn data];   
end
%%*************Step2:加窗**************
%加窗函数,窗函数频谱宽度与B的尺寸有关,宽度理论上为2*pi/B
%此处B取32
B = 32*32;
n0 = -N/2:N/2-1;
G = sinc(pi/B*n0).*gausswin(N)‘;%2*pi/B
%滤波
pn = pn.*G;
% figure()
% plot(abs(fft(G)));
%%*************Step3:FFT降采样**************
%降采样序列
yn = sum(reshape(pn,B,N/B),2);
figure()
plot(abs(fft(yn)));
%%*************Step4:频率估计**************
%根据Hash映射
[val,hk] = max(abs(fft(yn)));
k_est = round(hk*N/sigma/B);
% omega_k = sigma*k-hk*(N/B);
[~,k_real] = max(abs(fft(x)));
disp([k_real k_est])

稀疏傅里叶变换(sparse FFT)

标签:ext   alt   流行   就是   www.   直接   基础上   isp   时间   

原文地址:https://www.cnblogs.com/xingshansi/p/8214122.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!