Apa Perkiraan FirstRed IIR (AR Filter) Terbaik ke Moving Average Filter (FIR Filter)?


24

Asumsikan filter IIR urutan pertama berikut:

y[n]=αx[n]+(1α)y[n1]

Bagaimana saya bisa memilih parameter α st yang mendekati IIR sebaik mungkin FIR yang merupakan rata-rata aritmatika dari sampel terakhir k:

z[n]=1kx[n]+1kx[n1]++1kx[nk+1]

Di mana n[k,) , yang berarti input untuk IIR mungkin lebih panjang dari k tetapi saya ingin memiliki perkiraan terbaik dari rata-rata input terakhir k.

Saya tahu IIR memiliki respon impuls tak terbatas, maka saya mencari pendekatan terbaik. Saya akan senang untuk solusi analitik apakah itu untuk fungsi biaya L2 atau L1 .

Bagaimana mungkin masalah pengoptimalan ini dapat diselesaikan hanya dengan 1st Order IIR

Terima kasih.


Apakah harus mengikuti y[n]=αx[n]+(1α)y[n1] tepatnya]?
Telepon

1
Ini pasti akan menjadi perkiraan yang sangat buruk. Tidak bisakah Anda membayar lebih dari IIR orde pertama?
leftaroundabout

Anda mungkin ingin mengedit pertanyaan Anda sehingga Anda tidak menggunakan y[n] untuk mengartikan dua hal yang berbeda, misalnya persamaan kedua yang ditampilkan dapat membaca , dan Anda mungkin ingin mengatakan apa sebenarnya kriteria Anda "sebaik mungkin" misalnya Anda mau| y[n]-z[n]| menjadi sekecil mungkin untuk semuan, atau| y[n]-z[n]| 2menjadi sekecil mungkin untuk semuan. z[n]=1kx[n]++1kx[nk+1]|y[n]z[n]|n|y[n]z[n]|2n
Dilip Sarwate

y[n]k| y [ n ] - z [ n ] | 2n[k,inf]|y[n]z[n]|2

Jawaban:


10

Tidak ada solusi analitik untuk menjadi skalar (saya pikir). Berikut ini adalah skrip yang memberi Anda untuk diberikan . Jika Anda membutuhkannya secara online, Anda dapat membangun LUT. Script menemukan solusi yang meminimalkanα KααK

0πdw|H1(jw)H2(jw)|2

di mana adalah respons frekuensi FIR dan adalah respons frekuensi IIR.H 2H1H2

Anda tidak menentukan rentang untuk K. Tapi saya hanya ingin memperjelas bahwa sistem berikut ini setara dengan filter rata-rata Anda dan memiliki kompleksitas komputasi yang sama dan IIR pesanan pertama Anda!

H(z)=1K1zK1z1

function a = find_a(K)

w = 0.0001:0.001:pi;
as = [-1:0.001:-0.001  0.001:0.001:1];

E = zeros(size(as));
for idx=1:length(as)
    fJ = J(w,as(idx),K);
    E(idx) = sum(fJ);
end

[Emin, indx] = min(E)
a = as(indx)

function f = J(w,a,K)
    num = 2*(2-a)*(1-cos(w*K)) + 2*(cos(w*(K-1)) - cos(w)) - 2*(1-a)*(cos(w)-cos(w*(K+1)));
    den = (2-a)^2 + 1 + (1-a)^2 + 2*(1-a)*cos(2*w) - 2*(2-a)^2*cos(w);
    f = -(a/K)*num./den;
    f = f+(1/K^2)*(1-cos(w*K))./(1-cos(w))+a^2./(1+(1-a)^2-2*(1-a)*cos(w));
end

end

@Drazick Ini relatif lurus ke depan. Dua ekspresi untuk IIR dan FIR dicolokkan ke integral. Kunci untuk menemukan ekspresi alternatif untuk filter FIR adalah mengenali deret / deret geometri. Anda menemukan semua detailnya di sini: en.wikipedia.org/wiki/Geometric_progress#Geometric_series . Dalam skrip, fungsi J menghitung ekspresi di bawah tanda integral.
niaren

@niaren Saya tahu ini adalah posting lama jadi jika Anda dapat mengingat: bagaimana fungsi Anda 'f' diturunkan? Saya telah mengkodekan hal serupa tetapi menggunakan fungsi transfer yang kompleks untuk FIR (H1) dan IIR (H2) dan kemudian melakukan penjumlahan (abs (H1 - H2) ** 2). Saya telah membandingkan ini dengan jumlah Anda (fj), tetapi mendapatkan hasil keluaran yang berbeda. Kupikir aku akan bertanya sebelum mempelajari matematika.
Dom

@ Tom Itu sudah lama sekali dan saya benar-benar tidak ingat. Saya kira saya baru saja melalui proses . Saya tidak ingat bagaimana saya memverifikasi ekspresi. Saya tidak keberatan menjalani matematika lagi ...[H1(jω)H2(jω)][H1(jω)H2(jω)]
niaren

@niaren Hai, saya mencoba untuk menurunkan ekspresi Anda tetapi macet ketika menjumlahkan fraksi kompleks. Saya membuat kesalahan dalam kode saya ... fungsi Anda tampaknya memberikan hasil yang proporsional dengan jumlah (abs (H1 - H2) ** 2), menunjukkan itu benar.
Dom

16

Ada diskusi yang bagus tentang masalah ini dalam Pemrosesan Sinyal Tertanam dengan Arsitektur Sinyal Mikro , kira - kira antara halaman 63 dan 69 . Pada halaman 63 , ini termasuk turunan dari filter rata-rata bergerak rekursif yang tepat (yang diberikan niaren dalam jawabannya ),

H(z)=1N1zN1z1.

Untuk kenyamanan sehubungan dengan diskusi berikut, ini sesuai dengan persamaan perbedaan berikut:

yn=yn1+1N(xnxnN).

Perkiraan yang menempatkan filter ke dalam bentuk yang Anda tentukan memerlukan asumsi bahwa , karena (dan saya kutip dari hal. 68 ) " adalah rata-rata sampel ". Perkiraan itu memungkinkan kita untuk menyederhanakan persamaan perbedaan sebelumnya sebagai berikut: y n - 1 x nxnNyn1yn1xn

yn=yn1+1N(xnyn1)yn=yn11Nyn1+1Nxnyn=(11N)yn1+1Nxn.

Pengaturan , kami tiba di formulir asli Anda, , yang menunjukkan bahwa koefisien yang Anda inginkan ( sehubungan dengan perkiraan ini) tepat (di mana adalah jumlah sampel). yn=αxn+(1-α)yn-11α=1Nyn=αxn+(1α)yn1 N1NN

Apakah perkiraan ini "terbaik" dalam beberapa hal? Ini tentu saja elegan. Inilah bagaimana respon magnitudo membandingkan [pada 44.1kHz] untuk N = 3, dan ketika N meningkat menjadi 10 (perkiraan berwarna biru):

N = 3 N = [3,10]


Seperti jawaban Peter menyarankan, perkiraan filter FIR dengan filter rekursif dapat menjadi masalah di bawah norma kuadrat terkecil. Diskusi yang luas tentang bagaimana menyelesaikan masalah ini secara umum dapat ditemukan dalam tesis JOS, Teknik Desain Filter Digital dan Identifikasi Sistem dengan Aplikasi ke Biola . Dia menganjurkan penggunaan Norma Hankel, tetapi dalam kasus-kasus di mana respons fase tidak penting, ia juga mencakup Metode Kopec, yang mungkin bekerja dengan baik dalam kasus ini (dan menggunakan norma ). Tinjauan luas teknik dalam tesis ini dapat ditemukan di sini . Mereka mungkin menghasilkan perkiraan menarik lainnya.L2


Ini adalah cara "Elegan" untuk mengatakan sesuatu tentang memori Filter IIR urutan pertama. Ingatannya setara dengan . Saya akan melihat metode lain yang Anda sebutkan. Terima kasih. 1α
Royi

Bisakah Anda menjelaskan secara intuitif mengapa di bawah norma LS ( ) tidak ada solusi? L2
Royi

Saya tidak yakin apakah ada solusi LS dalam kasus ini atau belum, saya hanya tahu bahwa itu cenderung memiliki masalah dengan konvergensi untuk masalah umum "pendekatan FIR berbasis IIR". Saya akan memperbarui dengan lebih banyak info ketika saya mendapat kesempatan.
datageist

Nah, Jika fungsi biaya yang disarankan Peter (Yang pertama) benar ada solusinya. Setidaknya menurut perhitungan saya.
Royi

Besar. Saya penasaran melihat bagaimana pendekatan "heuristik" dibandingkan dengan sesuatu yang lebih kanonik. 1/N
datageist

16

OK, mari kita coba untuk mendapatkan yang terbaik: jadi bahwa koefisien adalah . x[n-m]α(1-α)m

y[n]=αx[n]+(1α)y[n1]=αx[n]+(1α)αx[n1]+(1α)2y[n2]=αx[n]+(1α)αx[n1]+(1α)2αx[n2]+(1α)3y[n3]
x[nm]α(1α)m

Perkiraan mean-square terbaik akan meminimalkan: m>k-1

J(α)=m=0k1(α(1α)m1k)2+m=kα2(1α)2m=m=0k1(α2(1α)2m2kα(1α)m+1k2)+α2(1α)2km=0(1α)2m=α21(1α)2k1(1α)2+2αk1(1α)k1(1α)+α2(1α)2k1(1α)2+1k=α21(1α)2+2k(1(1α)k)+1k=α22αα2+2k(1(1α)k)+1k=α2α+2k(1(1α)k)+1k
karena koefisien FIR adalah nol untuk .m>k1

Langkah selanjutnya adalah mengambil turunan dan menyamakan dengan nol.


Melihat plot dari diturunkan untuk dan dari 0 hingga 1, sepertinya masalah (seperti yang saya atur) adalah salah, karena jawaban terbaiknya adalah .K = 1000 a a = 0JK=1000αα=0

masukkan deskripsi gambar di sini


Saya pikir ada kesalahan di sini. Cara seharusnya menurut perhitungan saya adalah:

J(α)=m=0k1(α(1α)m1k)2+m=kα2(1α)2m=m=0k1(α2(1α)2m2kα(1α)m+1k2)+α2(1α)2km=0(1α)2m=α21(1α)2k1(1α)22αk1(1α)k1(1α)+1k+α2(1α)2k1(1α)2

Menyederhanakannya sesuai dengan hasil Mathematica :

J(α)=α2α+2(1α)k1k

Menggunakan kode berikut di MATLAB menghasilkan sesuatu yang setara meskipun berbeda:

syms a k;

expr1 = (a ^ 2) * ((1 - ((1 - a) ^ (2 * k))) / (1 - ((1 - a) ^ 2)));
expr2 = ((2 * a) / k) * ((1 - ((1 - a) ^ (k))) / (1 - (1 - a)));
expr3 = (1 / k);
expr4 = ((a ^ 2) * ((1 - a) ^ (2 * k))) / (1 - ((1 - a) ^ (2)));

simpExpr = simplify(expr1 - expr2 + expr3 + expr4);

J(α)=2α2k2(1α)k+1k

Bagaimanapun, fungsi-fungsi itu memiliki minimum.


Jadi mari kita asumsikan bahwa kita benar-benar hanya peduli tentang perkiraan atas dukungan (panjang) dari filter FIR. Dalam hal ini, masalah pengoptimalannya adalah:

J2(α)=m=0k1(α(1α)m1k)2

Plotting untuk berbagai nilai vs hasil di tanggal dalam plot dan tabel di bawah ini.J2(α)Kα

Untuk = 8. = 0.1533333 Untuk = 16. = 0,08 Untuk = 24. = 0,0533333 Untuk = 32. = 0,04 Untuk = 40. = 0,0333333 Untuk = 48. = 0,0266667 Untuk = 56. = 0,0233333 Untuk = 64. α m i n K α m i n K α m i n K α m i n K α m i n K α m i n K α m i nKαmin
Kαmin
Kαmin
Kαmin
Kαmin
Kαmin
Kαmin
Kαmin = 0,02
Untuk = 72. = 0,0166667 Kαmin

masukkan deskripsi gambar di sini

Garis putus-putus merah adalah dan garis hijau adalah , nilai yang meminimalkan (dipilih dari ).1/KαminαJ2(α)alpha=[0:.01:1]/3;


1
Hanya akan memposting hal yang sama persis =)
Phonon

@Phonon: Jangan ragu untuk melanjutkan! Saya menandainya sebagai komunitas wiki untuk tujuan itu.
Peter K.

Derivatif wrt adalah seri dengan jumlah istilah yang tak terbatas (yaitu bukan polinomial) yang harus Anda tetapkan sama dengan dan kemudian selesaikan untuk , dan dengan demikian perhatian (atau kemungkinan perkiraan) akan diperlukan. α0α
Dilip Sarwate

Bisakah seseorang memeriksa dan / atau memperbaiki pekerjaan saya? :-)
Peter K.

@DilipSarwate, Apa yang akan menjadi perkiraan terbaik? Terima kasih.
Royi


3

Saya menemukan pertanyaan lama ini dan saya ingin membagikan solusi saya. Seperti disebutkan dalam jawaban lain, tidak ada solusi analitis, tetapi fungsi yang diminimalisasi berperilaku baik dan nilai optimal dari dapat ditemukan dengan mudah dengan beberapa iterasi Newton. Ada juga formula untuk memeriksa optimalitas hasil.α

Respon impuls dari panjang FIR moving average filter diberikan olehN

(1)hFIR[n]=1N(u[n]u[nN])

di mana adalah fungsi unit step. Filter IIR urutan pertamau[n]

(2)y[n]=αx[n]+(1α)y[n1]

memiliki respons impuls

(3)hIIR[n]=α(1α)nu[n]

Tujuannya sekarang adalah untuk meminimalkan kesalahan kuadrat

(4)ϵ=n=0(hFIR[n]hIIR[n])2

Menggunakan dan , kesalahan dapat ditulis sebagai(1)(3)

ϵ(α)=n=0N1(α(1α)n1N)2+n=Nα2(1α)2n=α2n=0(1α)2n2αNn=0N1(1α)n+n=0N11N2=α21(1α)22αN1(1α)N1(1α)+1N(5)=α2α2N(1(1α)N)+1N,0<α<2

Ungkapan ini sangat mirip dengan yang diberikan dalam jawaban ini , tetapi tidak identik. Pembatasan pada dalam memastikan bahwa jumlah tak terbatas bertemu, dan identik dengan kondisi stabilitas untuk filter IIR yang diberikan oleh .α(5)(2)

Mengatur turunan dari ke nol hasil dalam(5)

(6)(1α)N1(2α)2=1

Perhatikan bahwa optimal harus dalam interval karena nilai menghasilkan respons impuls bolak-balik , yang tidak dapat mendekati perkiraan impuls konstan filter rata-rata bergerak FIR.( 0 , 1 ]α(0,1]α(3)

Mengambil akar kuadrat dari dan memperkenalkan , kami dapatkan(6)β=1α

(7)β(N+1)/2+β(N1)/21=0

Persamaan ini tidak dapat diselesaikan secara analitis untuk , tetapi dapat diselesaikan untuk :NβN

(8)N=2log(1+β)log(β),β0

Persamaan dapat digunakan untuk memeriksa ulang solusi numerik ; harus mengembalikan nilai ditentukan .(8)N(7)N

Persamaan dapat diselesaikan dengan beberapa baris kode (Matlab / Oktaf):(7)

N = 50; % panjang filter yang diinginkan dari filter rata-rata bergerak FIR

if (N == 1)% tidak ada iterasi untuk kasus sepele
    b = 0;
lain
    % Iterasi Newton
    b = 1; % nilai awal
    Nit = 7;
    n = (N + 1) / 2;
    untuk k = 1: Nit,
        f = b ^ n + b ^ (n-1) -1;
        fp = n * b ^ (n-1) + (n-1) * b ^ (n-2);
        b = b - f / fp;
    akhir

    % hasil cek
    N0 = -2 * log (1 + b) / log (b) + 1% harus sama dengan N
akhir

a = 1 - b;

Di bawah ini adalah tabel dengan nilai optimal untuk rentang panjang filter :NαN

   N alpha

   1 1,0000e + 00
   2 5.3443e-01
   3 3.8197e-01
   4 2.9839e-01
   5 2.4512e-01
   6 2.0809e-01
   7 1.8083e-01
   8 1.5990e-01
   9 1.4333e-01
  10 1.2987e-01
  20 6.7023e-02
  30 4.5175e-02
  40 3.4071e-02
  50 2.7349e-02
  60 2.2842e-02
  70 1.9611e-02
  80 1.7180e-02
  90 1.5286e-02
 100 1.3768e-02
 200 6.9076e-03 
 300 4.6103e-03
 400 3.4597e-03
 500 2.7688e-03
 600 2.3078e-03
 700 1.9785e-03
 800 1.7314e-03
 900 1.5391e-03
1000 1.3853e-03
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.