Apa manfaat relatif dari berbagai skema upampling?

12

Saya baru-baru ini menemukan sistem DSP yang melakukan beberapa upampling internal melalui zero padding. Mengharapkan zero-order-hold, saya terkejut menemukan bahwa sinyal DC tidak menghasilkan output DC; banyak harmonik dari frekuensi pengambilan sampel internal (lebih rendah) juga ada dalam output.

Ini mengarah ke pertanyaan saya: Apa teknik upampling yang umum digunakan, dan apa manfaat relatifnya? Mengapa saya memilih zero padding, zero order hold, atau first order hold, dan teknik apa yang tersedia?

Beberapa klarifikasi:

  • Sistem ini real-time, sehingga skema upampling harus kausal.
  • Upampler diikuti oleh filter anti-aliasing yang juga dapat ditentukan.
nibot
sumber

Jawaban:

11

Untuk keperluan jawaban ini saya akan menggunakan terminologi Matlab dan mendefinisikan "upsampling" sebagai proses memasukkan nol di antara sampel input, dan "interpolasi" sebagai proses gabungan dari upsampling dan filtering untuk menghapus alias ( menjadi faktor interpolasi) yang diperkenalkan oleh upampling. Untuk penjelasan tentang bagaimana / mengapa upsampling memperkenalkan alias, silakan lihat utas ini .m - 1 mm1m1m

Penting untuk dipahami bahwa filter low-pass dapat digunakan untuk menghilangkan alias dan dengan demikian menyelesaikan interpolasi. Beberapa filter memiliki kelebihan saat digunakan dalam interpolasi. Saya akan membahas berbagai rasa penyaringan interpolasi di bawah ini.

Filter FIR

Filter interpolasi FIR efisien karena menggabungkan upampling dan alias penyaringan menjadi satu langkah. Ini paling mudah dilihat dalam contoh. Misalkan kita memiliki urutan data dan kami ingin menginterpolasinya dengan faktor dua. Langkah pertama adalah upample dengan faktor dua. Ini mengubah urutan data asli dari ke .x 0 , x 1 , . . . x N x 0 , 0 , x 1 , 0 , . . . x N.x[n]x0,x1,...xNx0,0,x1,0,...xN

Sekarang anggaplah kita memiliki filter FIR low-pass, , yang akan kita gunakan untuk menghapus alias. Ketika kami menggabungkan urutan data upampled dengan filter, setengah dari keran filter dirangsang oleh sampel yang tidak nol, dan setengah dari keran tidak aktif karena mereka sesuai dengan sampel nol. Setengah yang dirangsang dan setengah yang tidak aktif membalik bolak-balik saat filter melewati data. Dua set keran ini kadang-kadang disebut sebagai fase filter.h[n]

Efek yang sama ini dapat dicapai secara implisit dengan menghilangkan upampling, dan memfilter urutan data asli dengan interpolasi filter FIR. Filter FIR interpolasi menghasilkan output untuk setiap sampel input. Untuk semua output filter akan beroperasi pada sampel input (di mana K adalah jumlah tap filter dan "ceil" adalah fungsi langit-langit).m c e i l ( K / m )mmceil(K/m)

Sebuah contoh mudah-mudahan akan menggambarkan cara kerjanya. Misalkan kita memiliki filter enam ketuk dan kita melakukan interpolasi dengan faktor dua. Keran filter adalah [1 -2 4 4 -2 1]. Jika kita benar-benar melakukan interpolasi dan kemudian menyaring sampel dan tap filter akan berbaris (setelah tumpang tindih penuh) sebagai berikut:

0:1x2:20:4x1:40:2x0:1
Sampel selanjutnya ...

x3:10:2x2:40:4x1:20:1
Sampel selanjutnya ...

0:1x3:20:4x2:40:2x1:1
Dan seterusnya. Inti dari filter interpolasi adalah bahwa ia benar-benar melompati memasukkan nol dan hanya mengganti set keran yang digunakannya saat ini. Dengan demikian, urutan sebelumnya sekarang akan terlihat seperti berikut:

x2:2x1:4x0:1

x3:1x2:4x1:2

x3:2x2:4x1:1

Zero Order Hold

Interpolator penahan nol-urutan adalah interpolator yang hanya mengulangi setiap sampel kali. Jadi faktor dari dua interpolator tahan nol-order mengkonversi menjadi . Metode ini menarik karena sangat mudah, baik dalam hal pengkodean maupun beban komputasi, untuk diimplementasikan.m1x0,x1,...xNx0,x0,x1,x1,...xN,xN

Masalahnya adalah filter low-pass sangat buruk. Kita dapat melihat bahwa ketika kita mengenali bahwa interpolator tahan nol adalah kasus khusus interpolasi FIR. Ini sesuai dengan upampling diikuti oleh filter persegi panjang . Transformasi Fourier dari filter persegi panjang adalah fungsi sinc, yang merupakan filter low-pass yang agak kumuh. Shabbiness dapat diperbaiki dengan filter FIR kompensasi, tetapi jika Anda akan melakukannya Anda mungkin juga menggunakan filter low-pass yang baik untuk memulai.m

Penahanan Pesanan Pertama

Penahanan urutan pertama adalah langkah naik dari interpolator penahan nol di mana penahanan interpolasi secara linier dengan menggunakan dua sampel input terdekat. Jadi, faktor dua interpolator penahan orde pertama akan mengkonversi menjadi .x0,x1,...xNx0,x0+x12,x1,x1+x22,...xN

Seperti interpolator penahan orde nol, interpolator penahan orde pertama adalah kasus khusus interpolasi FIR. Ini sesuai dengan upampling dan penyaringan dengan filter segitiga. Untuk interpolasi faktor-dua, filternya adalah , untuk interpolasi faktor-tiga filter adalah , dan seterusnya.[1[12112][132312312]

Filter segitiga adalah dua filter persegi panjang yang digabungkan menjadi satu, yang sesuai dengan kuadrat dalam domain frekuensi. Ini merupakan langkah pasti dari penahanan tanpa urutan, tetapi masih belum bagus.

Filter IIR

Saya belum pernah menggunakan filter IIR interpolasi jadi saya tidak akan mengatakan banyak tentang mereka. Saya berasumsi bahwa argumen yang sama berlaku seperti dalam filtering biasa - filter IIR lebih efisien, bisa tidak stabil, tidak memiliki fase linear, dll tapi saya bisa salah tentang itu.

Interpolasi FFT

Saya akan melempar yang ini walaupun itu tidak terlalu umum (tentu saja, saya juga tidak berpikir bahwa zero-hold itu biasa). Thread ini membahas resampling FFT, di mana resampling adalah interpolasi dan penipisan.

Pesanan Tinggi Ditahan

Interpolator penahan orde kedua biasanya disebut sebagai "interpolator kuadratik". Mereka non-linear dan karenanya tidak dapat diimplementasikan sebagai filter FIR, yang linear. Saya tidak mengerti matematika di belakang mereka dengan baik, jadi saya tidak akan membahas kinerja mereka. Saya akan mengatakan, bahwa saya percaya bahwa mereka agak umum di luar pemrosesan sinyal.

Metode urutan yang lebih tinggi (tiga atau lebih) juga ada. Ini disebut sebagai "regresi polinomial".

EDIT:

Filter Combade Integrator Comb (CIC)

Saya lupa menyebutkan Filter CIC . Filter CIC digunakan karena dua alasan: mereka hanya menggunakan adders / subtracters (bukan masalah besar sekarang karena perkalian cepat dan murah), dan mereka dapat melakukan perubahan laju sampel yang sangat besar dengan sangat efisien. Sisi buruknya adalah bahwa mereka pada dasarnya merupakan implementasi yang efisien dari filter persegi panjang bertingkat, sehingga mereka memiliki semua kelemahan dari filter persegi panjang seperti dibahas di atas. Interpolator CIC hampir selalu didahului oleh filter FIR kompensasi yang mendistorsi sinyal untuk membatalkan distorsi yang diperkenalkan oleh CIC. Jika perubahan laju sampel cukup besar, biaya filter pra-distorsi sepadan.

Jim Clay
sumber
Survei yang fantastis Pak Jim. Untuk menambah kategori pesanan tingkat tinggi Anda, saya percaya bahwa ini juga disebut sebagai "regresi polinomial". Dalam hal itu, mengingat serangkaian titik tertentu, kami menghitung garis, parabola, kubik, polinomial orde tinggi yang paling cocok. Setelah kita memiliki persamaan, kita dapat dengan mudah mengetahui apa itu titik tengah.
Spacey
Pertanyaan: 1) Saya tidak sepenuhnya jelas tentang paragraf terakhir dari bagian Filter FIR. Anda menyebutkan bahwa output ke-2 dan ke-3 yang sesuai dengan sampel input pertama menggunakan kaset filter 1, 4, 7, dan kemudian 2, 5, 8. Namun Anda juga menyebutkan bahwa semuanya nol ... jadi bukan output ke-2 dan ke-3 sampel hanya nol dalam hal ini? 2) 'Filter Interpolasi FIR' ini, apakah terlihat seperti, katakanlah, [1 0 0 3,2 0 0 -2,1 0 0 1,1 0 0] untuk m = 3? (Angka dibuat).
Spacey
@Mohammad saya sudah mengedit jawabannya. Saya harap ini membantu. Dan terima kasih atas informasi tentang regresi polinomial.
Jim Clay
1
@endolith Dua alasan, saya pikir: kompleksitas dan hanya masuk akal secara komputasi ketika panjang filter melebihi angka tertentu (dan saya tidak yakin apa nomor itu). Pendekatan FFT sangat baik ketika berhadapan dengan blok sampel, tetapi jika Anda berurusan dengan aliran sampel maka Anda juga harus melakukan overlap-add atau overlap-save untuk menjaga kontinuitas.
Jim Clay
1
@endolith Satu hal yang sangat menyenangkan tentang pendekatan FFT adalah hampir tidak ada biaya untuk menggunakan filter besar.
Jim Clay
3

Jawaban Jim cukup baik. Semua metode upampling mengikuti skema dasar yang sama:

  1. Masukkan nol di antara sampel: Ini menghasilkan pengulangan berkala dari spektrum asli tetapi meninggalkan spektrum di pita asli sepenuhnya utuh
  2. Filter low pass untuk menghilangkan semua spektrum cermin

Perbedaan utama antara metode adalah bagaimana filter low pass diimplementasikan. Upsampler yang ideal akan mencakup filter low-pass yang ideal tetapi itu tidak praktis. Mempertimbangkan masalah dalam domain frekuensi memungkinkan untuk menemukan algoritma pengambilan sampel yang tepat untuk kebutuhan spesifik Anda:

  1. Berapa banyak distorsi amplitudo yang bisa saya toleransi di band asli? Apakah itu tergantung frekuensi?
  2. Apakah saya peduli dengan fase di band asli? Jika Anda perlu mempertahankan fase Anda memerlukan FIR fase linear. Jika tidak fase minimum melakukan pekerjaan yang lebih baik dalam mempertahankan "kausalitas" dan onsets tajam.
  3. Berapa yang saya butuhkan untuk menekan gambar cermin? Pada dasarnya gambar cermin akan muncul sebagai noise tambahan di pita dasar.

Interpolator non-linear orde tinggi (spline, hermitian, Lagrange) biasanya tidak berfungsi dengan baik karena kesalahan interpolasi sangat bergantung pada sinyal dan hampir tidak mungkin dipetakan ke kebutuhan spesifik.

Hilmar
sumber
Apa yang Anda maksud dengan "melakukan pekerjaan yang lebih baik dalam mempertahankan 'kausalitas'"?
nibot
0

Ketika mempertimbangkan perbedaan antara sampel-dan-tahan (yaitu pengulangan nilai sampel) dan zero padding, akan sangat membantu untuk menyadari (seperti yang ditunjukkan Jim dan Hilmar) bahwa sampel-dan-tahan dapat diartikan sebagai upsampling oleh zero padding diikuti oleh Filter FIR dengan respons impuls terdiri dari pulsa persegi panjang.

Misalnya, ketika meng-upampling dari 2 kHz ke 64 kHz (faktor 32), kita dapat menerapkan ini dengan memasukkan 31 nol di antara masing-masing pasangan pengambilan sampel 2 kHz, dan kemudian memfilter dengan filter FIR yang terdiri dari 32 yang, dengan yang lainnya koefisien nol.

sincτ=0

Ternyata sincfungsi ini memiliki nol tepat pada harmonik frekuensi sampling yang lebih rendah. Dalam contoh aplikasi kami dari upampling dari 2048 Hz hingga 65536 Hz, respons frekuensi operasi sampel-dan-tahan memiliki nol pada 2048 Hz, 4096 Hz, dll.

masukkan deskripsi gambar di sini

Dari sini, saya menyimpulkan bahwa setiap filter interpolasi yang benar-benar menekan harmonik frekuensi sampling asli akan terlihat seperti "sampel dan tahan". Apakah ini benar?

1/f

nibot
sumber
Masalahnya adalah bahwa nol sangat sempit, sehingga sebagian besar sinyal akan memiliki energi di luar nol.
Jim Clay
@ Jimclay, Bukankah nol sempit sempurna untuk membunuh harmonik laju pengambilan sampel yang lebih rendah? Saya setuju, Anda juga ingin beberapa kutub lagi sekitar 1 kHz untuk menghilangkan frekuensi gambar. Saya kira saya akan memperluas pertanyaan saya: bagaimana cara mendesain filter interpolasi yang baik?
nibot
Anda mendesain filter low-pass yang pass band-nya termasuk bandwidth sinyal Anda, dan yang stop band-nya menyertakan alias yang diperkenalkan saat Anda upample. Frekuensi di antara titik 3dB sinyal dan alias 'adalah pita transisi Anda. Jika pertanyaan Anda adalah "bagaimana cara merancang filter low-pass?", Maka tanyakan dalam pertanyaan lain dan kita bisa membahasnya.
Jim Clay
Saya umumnya mengerti cara mendesain filter, biasanya dengan menempatkan kutub dan nol di s-domain secara eksplisit dan kemudian mengubahnya menjadi filter z-domain. Saya bertanya-tanya apakah ada trik khusus untuk filter interpolasi. Pesan yang saya ambil adalah bahwa sebenarnya tidak ada trik - filter interpolasi sama seperti jenis filter lainnya, dan desainnya adalah pilihan kompromi antara berbagai pertimbangan (riak, fase, penundaan kelompok, atenuasi stop-band minimum, kompleksitas komputasi, dll).
nibot
Di sisi lain, saya tidak tahu apa-apa tentang mendesain filter FIR.
nibot