|
各位老师大神,我最近学习维纳滤波主要有以下几个困惑:
1. 这到底是个SISO问题还是MIMO问题???
比如我有待处理信号x=[x(1) x(2) x(3) ... x(N) x(N+1) ... ],目标输出d=[d(1) d(2) d(3) ... d(N) d(N+1) ... ],权向量w=[w(1) w(2) w(3) ... w(N)](维纳滤波器阶数为N-1阶),按照定义误差信号e(k)=d(k)-y(k)=d(k)-w*X(k),其中X(k)=[x(k-1) x(k-2) ... x(k-N)]T,这是个向量吧?还是矩阵?因为我看到很多文章说原理就是用x(k)前面N个数值估计x(k)的值,那就应该理解为向量吧?那X(k)就是一个N×1的向量了。然后以e(k)这一个值的最小值(也就是x(k)的MSE吧?)作为求解条件得到最优解w=Rxd-1×Rxx,那么问题来了:
首先,这一点的最优解能作为整个信号x的维纳滤波器的最优解吗?k换成k+1呢?对于任意k>N的值呢?也是最优解?
其次,Rxx=XT(转置)*X,也就是一个1×N的向量乘以一个N×1的向量得到N×N的矩阵,那这个矩阵里每个元素不是两个数据相乘的结果?但实际上现在的程序计算Rxx时都是计算信号x的自相关,再取N个自相关结果构造托普利兹矩阵,程序如下:
rxx=xcorr(x);
rxx=rxx(N:2*N-1);
Rxx=toeplitz(rxx);
实际上这种情况下相当于X是这样一个矩阵吧?
X=[x(1) x(2) ... x(N);x(2) x(3) ... x(N+1); ... ;x(N) x(N+1) ... x(2N)] 需要注意的是直接求自相关的话,信号也没有翻转,与权重相乘的话不是卷积了,这也不合理吧?就算理解为有N个输入,每一行作为一个输入来估计[d(N+1) d(N+2) ... d(2N)]的值?这样的话误差信号e和目标输出d都不再是k处的值了,而是其N+1:2N的一个向量,这时候算互相关向量也应该是目标输出d(N+1:)与信号x的互相关吧?而原程序是直接算d与x互相关,然后取N个结果构造托普利兹矩阵,程序如下:
rxd=xcorr(d,x);
rxd=rdx(N:2*N-1);
Rxd=toeplize(rxd);
2. 所以第二个问题,对于一个特定的信号x和d,自相关矩阵和互相关矩阵到底要怎么算呢?求解答,谢谢各位!
|
|