热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

数字滤波器的MATLAB与FPGA实现之读书笔记(四变换域滤波器的FPGA实现)

一、变换域滤波器简介1、采用变换域进行滤波处理的原因针对在时域无法进行滤波的情况或节约运算量。比如,扩频通信中的强窄带干扰的滤除,在时域很难处理&#

一、变换域滤波器简介


1、采用变换域进行滤波处理的原因

针对在时域无法进行滤波的情况或节约运算量。比如,扩频通信中的强窄带干扰的滤除,在时域很难处理,采用智能天线阵处理时,如果有用信号与干扰信号的波达方向相同,也无法通过波束成型算法滤除,但采用变换域滤波处理却十分容易。


2、变换域滤波有两种处理方法

通过某种变换将时域信号映射到另一个“域”直接处理,且处理后直接得到所需的时域信号,而不需要再进行域的反变换,如变换域串行LMS算法;

另一种处理方法是通过某种变换将时域映射到另一个“域”进行滤波处理,处理后的信号再通过对应的反变换处理,将信号再映射到时域,从而完成信号的滤波处理,如频域块LMS算法及变换域抗窄带干扰技术。其中后一种处理方法应用得更为广泛,滤波效果也更好,实现相对简单。


二、快速傅里叶变换


1、离散傅里叶变换


时域频域
周期/非周期离散/连续
连续/离散非周期/周期

 


 


 

对时域有限长信号采样后(离散)进行周期延拓(周期),这样,频域信号就变了周期离散信号。离散傅里叶理论实现了频域离散化,开辟了用数字技术在频域处理信号的新途径。


2、DFT存在的问题


名称问题原因解决措施
频率泄露导致频谱扩展信号截取时加窗导致的选择适当形状的窗函数、预加窗函数
栅栏效应只能在离散点看到信号频谱时域周期拓展导致频域离散化序列补零

 

 

 

 


3、频率分辨率与DFT参数的选择

频率分辨率:表征在频率轴上所能得到的最小频率间隔。

对于长度为N的DFT变换,其频率分辨率△f=fs/N,其中fs为时域信号的采样频率。

如果在x(n)中有两个频率分别为f1、f2的信号,则在对x(n)用矩形窗截断时,要分辨这两个频率,必须满足


4、FFT算法的基本思想

原理:利用的对称性和周期性:

算法提升程度:


 原来FFT算法
 

N^2次复乘、N(N-1)次复加

(N/2)log_2N
N=864次复乘12次
N=10241048576次5120次

 

 

 

 

 


5、FFT 算法的MATLAB仿真

%E8_1_FFTSim.m
%仿真FFT参数对采用FFT算法分析信号频谱的影响。产生频率分别为2Hz,2.05Hz的正弦波合成信号,采样
%频率=10Hz。根据(8-8)式,要实现分辨两个单频信号的目的,DFT的序列长度必须满足 。分别仿真3种
%情况下的FFT变换:1)取 的128点数据,计算FFT;2)将128点 以补零的方式加长到512点,计算FFT;
%3)取512点 ,计算FFT。
f1=2; f2=2.05;%单正弦信号的频率
fs=10; %采样频率
%对128点时域序列进行FFT分析
N=128; %FFT分析的点数
n=0:N-1;
xn1=sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs);%产生128点时域信号序列
XK1=fft(xn1); %进行傅立叶变换,并进行归一化处理
MXK1=abs(XK1(1:N/2));
% MXK1=20*log10(abs(XK1(1:N/2)));
% MXK1=MXK1-max(MXK1);
%对补零后的512点时域序列进行FFT分析
M=512;
xn2=[xn1 zeros(1,M-N)];%在时域信号序列后补零
XK2=fft(xn2); %进行傅立叶变换,并进行归一化处理
MXK2=abs(XK2(1:M/2));
%MXK2=20*log10(abs(XK2(1:M/2)));
%MXK2=MXK2-max(MXK2);
%对512点时域序列进行FFT分析
n=0:M-1;
xn3=sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs);%产生128点时域信号序列
XK3=fft(xn3); %进行傅立叶变换,并进行归一化处理
MXK3=abs(XK3(1:M/2));
% MXK3=20*log10(abs(XK3(1:M/2)));
% MXK3=MXK3-max(MXK3);
%绘图
subplot(321);
x1=0:N-1;
plot(x1,xn1);xlabel('n','fontsize',8);title('128点x(n)','fontsize',8);
subplot(322);
k1=(0:N/2-1)*fs/N;
plot(k1,MXK1);xlabel('f(Hz)','fontsize',8);title('128点xn的FFT变换','fontsize',8);
subplot(323);
x2=0:M-1;
plot(x2,xn2);xlabel('n','fontsize',8);title('512点补零x(n)','fontsize',8);
subplot(324);
k2=(0:M/2-1)*fs/M;
plot(k2,MXK2);xlabel('f(Hz)','fontsize',8);title('512点补零xn的FFT变换','fontsize',8);
subplot(325);
plot(x2,xn3);xlabel('n','fontsize',8);title('512点x(n)','fontsize',8);
subplot(326);
plot(k2,MXK3);xlabel('f(Hz)','fontsize',8);title('512点xn的FFT变换','fontsize',8);

N>400,才能分辨出f1、f2两信号

 

 

 


推荐阅读
author-avatar
飞翔的10号
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有