Saya baru saja mensimulasikan model orde kedua auto-regresif yang dipicu oleh white noise dan memperkirakan parameter dengan filter pesanan rata-rata-kuadrat rata-rata pesanan 1-4.
Sebagai filter orde pertama memodelkan sistem, tentu saja perkiraannya aneh. Filter orde kedua menemukan perkiraan yang baik, meskipun memiliki beberapa lompatan yang tajam. Ini diharapkan dari sifat filter NLMS.
Yang membingungkan saya adalah filter urutan ketiga dan keempat. Mereka tampaknya menghilangkan lompatan yang tajam, seperti yang terlihat pada gambar di bawah ini. Saya tidak bisa melihat apa yang akan mereka tambahkan, karena filter orde kedua sudah cukup untuk memodelkan sistem. Parameter redundan berkisar sekitar .
Bisakah seseorang menjelaskan fenomena ini untuk saya, secara kualitatif? Apa yang menyebabkannya, dan apakah itu diinginkan?
Saya menggunakan ukuran langkah , sampel, dan model AR mana berwarna putih noise dengan varian 1.
Kode MATLAB, untuk referensi:
% ar_nlms.m
function th=ar_nlms(y,order,mu)
N=length(y);
th=zeros(order,N); % estimated parameters
for t=na+1:N
phi = -y( t-1:-1:t-na, : );
residue = phi*( y(t)-phi'*th(:,t-1) );
th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
end
% main.m
y = filter( [1], [1 0.9 0.2], randn(1,10000) )';
plot( ar_nlms( y, 2, 0.01 )' );
Jawaban:
Apa yang tampaknya terjadi adalah, saat Anda memulai pemodelan berlebihan, sinyal kesalahan menjadi semakin putih.
Saya memodifikasi kode Anda untuk mengembalikan sinyal kesalahan (bagian dari
residue
istilah).Plot ini menunjukkan koefisien nol-lag dari
xcorr
kesalahan untuk urutan = 2 (biru), 3 (merah), dan 4 (hijau). Seperti yang Anda lihat, istilah lag dekat-ke-tapi-bukan-nol semakin besar.Jika kita melihat FFT (spektrum) dari
xcorr
kesalahan, maka kita melihat bahwa istilah frekuensi yang lebih rendah (yang menyebabkan drift besar) semakin kecil (kesalahan mengandung frekuensi yang lebih tinggi).Jadi sepertinya efek over-modelling dalam hal ini adalah untuk filter kesalahan tinggi, yang (untuk contoh ini) bermanfaat.
sumber