全国大学生电子设计竞赛2017年E题 自适应滤波器

本文探讨了如何使用实时采样进行自适应滤波,针对10Hz频率分辨率的要求,选择了4MHz的采样率,并通过Matlab仿真分析了不同噪声类型下能量变化的规律。算法通过寻找能量斜率为负的点并进行二分搜索来确定最佳移相点。最终,实现了在1s内进行多次滤波的目标。文章还提到了加法器、移相器和自适应滤波器的硬件实现,特别是FPGA在延时和采样计算中的作用。

本题拟采用实时采样的方式来进行自适应滤波。

学过数字信号处理都知道,频率分辨率是采样率除以采样点数,而这道题提高部分要求10Hz的分辨率,经过前期的分析,我们采用采样率为4MHz,那么就是说我们需要采样到至少400k个点才能进行一次自适应,而采样这么多点需要的时间是1/10 = 0.1s,所以每进行一次自适应就需要花费0.1s的时间。
而提高部分又要求要在1s内完成,所以我们大概可以进行7到8次的滤波。

经过matlab仿真不断移相噪声相减得到的相减波形能量如下结果

在这里插入图片描述
噪声是正弦波时,移相的能量变化图

在这里插入图片描述
噪声是三角波时,移相的能量变化图

在这里插入图片描述
噪声是方波时,移相的能量变化图

通过前期的matlab能量仿真我们发现,能量都可以近似看成周期性变化的单调函数。为了分析方便我这里直接把几种不同的噪声移相产生的能量都看成三角波。

算法思路

在这里插入图片描述
先找到一个这样的A点,该点能量斜率为负(即能量是随着移相点数增加而减小的),然后再在这个点之后找到能量上升的一个点,然后找到AB横坐标中点C,选取AB中能量小的那个和C组成新的能量对,继续找中点,直到迭代到最低点结束迭代。

下面是matlab算法验证

fa=10010;        %设置波形频率 
fb=10000;
Fs=16000000;        %设置采样频率
L=1600000 + 1600;         %数据长度
%=============产生输入信号==============%
t=0:1/Fs:(1/Fs)*(L-1);


A = sin(2*pi*fa*t+pi/3);
B = square(2*pi*fb*t);


D = sin(2*pi*fa*t+pi/3+pi)+square
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值