我想比较维纳滤波器和卡尔曼滤波器的性能,以使用被白噪声破坏也就是说,我的测量是 的形式 ,其中具有均值和已知方差的正态分布。
使用卡尔曼滤波器,我可以将其置于状态空间形式 并解决问题。但是我很难设置问题,所以我可以用维纳滤波器解决。我的信号是恒定信号。我的过滤器输入是测量值。但是我怀疑我是否做错了什么,因为我估计的信号并不是对期望响应的一个很好的估计。我使用了以下matlab代码:
function test()
n = 0:511;
d = 10 * ones(1,512);
v = 0.5*randn(1,512);
x = d + v;
w = WienerFIRFilter(x, d, 12);
y = filter(w', 1, x);
plot(x)
hold on
plot(y, 'r')
end
函数 WienerFIRFilter 定义如下
function w=WienerFIRFilter(u,d,M)
aux = xcorr(d,u,'biased');
p = aux(1,(length(aux)+1)/2:((length(aux)+1)/2)+M-1);
[U, R] = corrmtx(u,M-1);
w=inv(R)*p';
end
难道我做错了什么?