找回密码
 注册
关于网站域名变更的通知
查看: 431|回复: 1
打印 上一主题 下一主题

LMS自适应滤波的FPGA实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-4-27 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

; g# K" t' o: Y$ p9 u' {  v4 h原理-最优估计技术这一部分是建议大家看完后面的在跳回来.( t# j- A6 d# R  ~# s
术语/模型定义和基本假设在立论之前,我们先定义一下相关信号量和系统模型,这次的系统大概是这个样子的:
' N- z) V% n" f/ g# k" g. R有几个会反复提及到的参量:
, W) k+ R, b; K7 k9 K$ s& N% a, ^
x=自适应系统的输入
/ z! s7 J/ M8 _% U- n$ `0 u, Wy=自适应系统 的输出
7 w2 p: s# @2 ], |d=(自适应系统的)期望响应
# a6 ]. p& {3 g+ Re=d-y=估计误差
$ l8 d; _8 V! A' \- z
而且我们在这里还需要对信号的特性进行假设,我们假设信号是满足广义稳态(Wide Sense Stationary)的.并不需要严格平稳或者是各态历经.也就是说信号具有一下特性:5 w4 m7 }! }9 Z0 J2 Q: q
对均值有:
. m( R3 L0 A+ a+ h5 s1 d/ N) R8 c7 b1 N
对方差有:
. x$ [4 R4 H/ L: n0 u' s( n, C$ ^
( L$ V( `+ W$ m对自相关函数:
9 s5 t9 R7 K6 |) v# z, s( l3 H* @( h* _2 C+ H
特别地:
! I! J* ^2 p/ c8 t* g
" K% V! u5 y0 x( H  M代价函数这个又是现在机器学习er喜见乐闻的定义了,) ?9 x0 R+ W2 c
我们在这里定义误差函数为:   R- h5 t/ R# v0 k# `8 l: W
其中d[n]是要估计的随机变量,y[n]是通过自适应滤波计算的估计点
; z$ T6 C6 i: w我们在里用最小均方(也称最小二乘法)(也称平方误差代价函数)来定义代价函数:! J" C( m; _: l" C" z3 p

1 R4 f( x/ E) \* j最优维纳估计这里推导的目的在于如何从理论上得到最佳的h[k] (下称)
6 I) q1 o9 M! H) A+ ^: e假设我们使用FIR滤波器来解决问题,则输出的响应为:1 R% Z* T3 y2 X! ~* `: b0 k
6 K2 u+ L& J8 S( e8 t9 X* r+ L
不妨使用向量来表达上式:% w, l4 u" c- U: R0 o5 n

; K2 f3 X6 Q, {  r2 ]( \, \所以我们可以更新e[n]:  `5 f0 ?" O$ W1 t3 j. F2 Q3 J

( p! ]# s7 \: a0 P6 Q$ @7 ^  j进着,我们可以求解代价函数:: x, A3 n0 _$ H9 f

( J6 C7 m0 D  c: v( B; `5 |在latex写向量是在太麻烦了,下省
. x. b: q7 s6 i7 d! `大家可以回想一下梯度下降法,后面才会真正介绍,这里想进一步减少代价函数的话,只要对求偏导就可以了& h; Q% Q, i- W  K; P) A6 q

; B7 Y1 l/ N; D9 v: f假设滤波器的权重向量f和信号向量x[n]是不相关的,则有:, i* X2 l& l' t2 i6 d# U( F6 }
9 T! g! p+ r$ z5 b1 P' p- a
所以结果就呼之欲出了:
0 S! V4 k8 Q+ k, Q1 ~" B$ O
# ?5 s) x8 g, H! t8 B! x+ S6 |一定要注意这里的x[n]是一个列向量,列向量,列向量
$ B5 L) z; S, n8 j& e" n$ f0 ?所以其实结果已经非常明显了,下面还是分开讲讲:9 I/ R' s* _3 q1 b2 v# C! ^
  • - u1 |; b. u$ C2 o
    很显然这个就是自相关矩阵,其中的矩阵形式是这样的:: D9 }: h0 g7 f. Q# I
    2 j% _2 A$ C' X* p
=
0 _6 f, [: a  Q5 P, v$ }# n* k
4 B7 ^4 |$ M# q; y) l+ Q& {0 e0 ?

  • 3 U4 ]/ c8 d5 ~3 A这里因为d[n]是一个标量,所以这个矩阵就是一个互相关函数的列向量而已
    ( ]; V# K( \1 b. a$ j4 ?- ^( U
所以我们可以将f改写成:4 o, M, b3 e  K0 Y6 Q- j
4 h& @& s5 u. M
从公式我们可以看到,如果存在的一个前提在于,的逆必须存在,也就是说必须是非奇异矩阵,所以这才是我们前提所假设的广义平稳需要,因为对于广义平稳信号来说,他的就是一个非奇异矩阵,并且存在逆矩阵
- u/ {! Q: k. L: r- n& P9 j) h回代到代价函数,我们可以得到估计的标准误差,这里不给出过程了(懒)' T9 t) Y& A9 }0 e
. i5 F6 P* n$ O6 j
实践-维纳-霍夫算法也就是上面所说的算法,现在我们假设输入是一个由曼彻斯特编码的信号m[n],幅值B=10,外加两个噪声:# l0 k5 g3 x0 L  `
  • 高斯白噪声5dbm吧 2. 电力线噪声,幅值A=50 频率60Hz
    $ c$ L5 k+ t9 E
现假设采样频率是电网噪声的4倍,即240Hz,我们用一个二抽头的FIR滤波器来解决这个问题: B! }1 W# z8 q) c. B  s
所以现在的d[n]为:. i5 e9 f. `; Q* G7 l# x

6 s$ ^  N5 z& k6 b( ^自适应滤波的输入的基准信号x[n]为:1 x/ J1 @* ?; f3 |/ f
# P6 L  G1 B5 d7 }
其中是一个角度偏移量.所以系统的输出是:3 y; f/ W* }2 f' u

5 `0 @2 U$ n3 V. y* M所以:
+ D0 R0 L/ e2 D对于自相关函数:
7 p5 R" l8 ~4 w5 _  |9 Y5 t6 T! T! N3 {

  ^7 u7 J" R2 f: `, i+ ^对于互相关函数:
% Y% m6 J! y; T. m, K4 I/ w/ s; x( I) D. B$ ?" q( k

' ?6 X& t) T* V0 |$ W所以下矩阵为:. l4 y, E7 H1 w
$ r* t3 }$ F: i8 [5 z

$ r) q. H7 o% F6 w% o$ C
Widrow-Hoff最小二乘算法从上面的最优维纳估计我们可以知道,实际上这种方法是理论不可实现的,因为自相关矩阵当系统规模变大的时候后变得极其的庞大和冗余,而且计算时间也极其长,所以我们需要一种方法来得到新的- I5 i0 _) d. l- @& `& j
Widrow-Hoff最小二乘(LMS)算法是一种实时近似逼近的实用方法,而且在后面的讨论中我们会发现他有较好的性能.而且公式极其对机器学习有基础的同学友好.
& t6 s  R- j, l- J原理推导实际上我们可以放弃对一次性求解,进而变成逐次按梯度逼近,也就是:: ?; t& O1 g. [; d5 d

7 ]. e8 Q; S1 w5 n  y这条公式相信学过梯度下降的同学都很熟吧...
! _' {9 s  e4 o0 P- f1 @- K所以现在我们对误差的估计就变成了对误差方向的估计,而用梯度下降的思想来考虑这个问题的话,我们就需要让误差的均值向每一个进行求导,即:
" \) v/ I- e: V( y% V& r' x: K3 p/ k. p* q# W! l/ t
实际上我们总不可能在FPGA上算误差的均值吧,所以这里要取真的误差值作为估计值:1 ?+ h& p7 _3 C) B& x: O- J

$ p+ y4 @7 U* N: n所以实际上:7 ^3 [: x  f6 @( v

4 L( H1 c- k. ^$ g3 ]回代到最初的起点,得:
) t% f2 b+ C+ j2 n, \1 L2 }! i& T5 Y4 G( ^  o
请记住,这条是最为重要的公式.& ~) l. Y7 p- ]; b* F1 h2 P
参数限定这里唯一要注意的参数就是这个每次迭代的,在这里我们不展开,大家学过机器学习的可以迁移思考一下梯度下降的学习率(learning rate)过大或者过小对算法的影响9 E& y" A. o: p5 b+ I$ w; c
最后的一些碎碎念实际上这篇博客我是不太想写的,因为其实这个工作是大二上学期的时候做的了.但是最近看机器学习的时候看到梯度下降的时候想了一下,还是决定写一下.; J& V$ E3 S5 E  A4 u8 j) @" L; R
其实如果大家有修过高等代数或者吴恩达的机器学习的话,实际上你可以看到,前半部分的最优估计技术其实就是正规方程法,后半部分的Widrow-Hoff最小二乘算法就是通用的梯度下降法
# Y; R: A5 E4 p1 N/ q再者,如果大家有修过凸优化理论的内点法的话,其实这个就是内点法里面的牛顿法...+ s: ?4 T  c9 k# E
结语这就是我们要用FPGA实现的算法了,其实算法已经写完很久了,但是因为最近电赛的原因就重写一次吧...% y; ^, _) }3 J4 X, }: u: ~$ J
但是因为这篇博客的公式实在是太多了,我都不好意思再写FPGA的结构设计了,就留待明天更新吧.
6 D0 h, x- C3 g/ H( z; k% `* U" |. y. O5 b. y
8 n, Y, S% N; a; q

" d. }6 o0 V! @# W3 a2 w6 f) g  s* n

该用户从未签到

2#
发表于 2021-4-27 13:09 | 只看该作者
x=自适应系统的输入7 ~) i3 i& E, c' _
y=自适应系统 的输出" Y: r( i4 w# B/ H
7 P8 s5 z8 P$ d' f: T+ m8 Z. }d=(自适应系统的)期望响应0 ^' K  Z& D2 [! f9 e: }( f' O# v0 _3 W; s) b0 o
e=d-y=估计误差
1 X: v9 j& L6 p$ l; I; {# `) E
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-31 03:51 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表