Apakah ada istilah teknis untuk metode sederhana merapikan sinyal?

26

Pertama, saya baru mengenal DSP dan tidak memiliki pendidikan nyata di dalamnya, tetapi saya sedang mengembangkan program visualisasi audio dan saya mewakili array FFT sebagai bar vertikal seperti dalam visualisasi spektrum frekuensi tipikal.

Masalah yang saya miliki adalah bahwa nilai sinyal audio berubah terlalu cepat untuk menghasilkan output visual yang menyenangkan jika saya hanya memetakan nilai FFT secara langsung:

masukkan deskripsi gambar di sini

Jadi saya menerapkan fungsi sederhana ke nilai-nilai untuk "memuluskan" hasilnya:

// pseudo-code
delta = fftValue - smoothedFftValue;
smoothedFftValue += delta * 0.2; 
// 0.2 is arbitrary - the lower the number, the more "smoothing"

Dengan kata lain, saya mengambil nilai saat ini dan membandingkannya dengan yang terakhir, dan kemudian menambahkan sebagian kecil dari delta itu ke nilai terakhir. Hasilnya terlihat seperti ini:

masukkan deskripsi gambar di sini

Jadi pertanyaan saya adalah:

  1. Apakah ini pola atau fungsi yang sudah mapan yang sudah dihapuskan oleh suatu istilah? Jadi, apa istilahnya? Saya menggunakan "smoothing" di atas tetapi saya sadar bahwa ini berarti sesuatu yang sangat spesifik dalam DSP dan mungkin tidak benar. Selain itu sepertinya mungkin terkait dengan amplop volume, tetapi juga tidak cukup hal yang sama.

  2. Apakah ada pendekatan yang lebih baik atau studi lebih lanjut tentang solusi yang harus saya perhatikan?

Terima kasih atas waktu dan permintaan maaf Anda jika ini adalah pertanyaan bodoh (membaca diskusi lain di sini, saya sadar bahwa pengetahuan saya jauh lebih rendah daripada rata-rata yang terlihat).

Michael Bromley
sumber
1
Sekarang saya bertanya-tanya apa yang Anda dapatkan jika Anda mengambil FFT yang dihaluskan dan FFT terbalik.
user253751
Apakah akan lebih mudah untuk hanya melakukan jawaban pertama dalam urutan yang berbeda? current_value = current_value * decay; if (new_value> current_value) {current_value = new_value; }
Richard Forster
@ Imibis Ini harus menjadi reverb dari pemahaman saya. Koreksi saya, jika saya salah.
Andreas
Tentu, dan kompiler yang mengoptimalkan akan menghasilkan implementasi yang sama. Poin kuncinya adalah untuk mendapatkan hasil yang benar ketika (current_value * decay) <new_value <current_value.
Richard Forster
2
Saya sangat suka pertanyaan ini. Ini adalah salah satu di mana seseorang mencoba beberapa hal tanpa sengaja menemukan diri mereka di bawah pohon pengetahuan yang sangat besar (filter Respon Impuls Tak Terbatas, khususnya). Sementara itu, orang-orang yang sudah memanjat pohon itu dapat menggambarkan semua hal keren yang telah mereka temukan di antara cabang-cabang ...
DrMcCleod

Jawaban:

37

Apa yang telah Anda terapkan adalah filter lowpass tiang tunggal, kadang-kadang disebut integrator bocor . Sinyal Anda memiliki persamaan perbedaan:

y[n]=0.8y[n1]+0.2x[n]

x[n]y[n]

Jason R
sumber
4
Terima kasih banyak untuk ini. Sangat bermanfaat. Googling pada saya sendiri seperti tersesat di laut ketika datang ke hal-hal DSP. Hanya memiliki beberapa istilah untuk pencarian memberi saya sesuatu untuk dipahami.
Michael Bromley
3
Saya berharap. Saya pikir OP menerapkan filter ini pada serangkaian nilai dalam nampan individual di domain frekuensi. Low-pass normal diterapkan pada serangkaian sampel dalam domain waktu. Apakah efeknya sama (saya kira tidak, karena bagian frekuensi tinggi masih dalam sinyal, tetapi ... intensitasnya berubah lebih lambat?)? Jika tidak, dapatkah Anda menguraikan apa yang sebenarnya dilakukan filter terhadap sinyal dalam domain waktu?
Jonas Schäfer
3
@JonasWielicki Saya pikir tujuannya adalah memperlancar nilai bin masing-masing individu, sehingga tidak berubah dengan sangat cepat. juga low pass filter (seperti yang dijelaskan dalam jawaban) berlaku untuk setiap rangkaian waktu terlepas dari domainnya (waktu atau frekuensi atau hal lain).
Arpit Jain
@arpitjain saya mengerti itu. Saya hanya ingin tahu apakah ada pemahaman (tidak harus oleh Anda, OP atau penjawab) bagaimana hal itu mempengaruhi domain waktu ketika Anda melakukan itu.
Jonas Schäfer
@JonasWielicki Operasi ini adalah konvolusi dalam domain frekuensi, sehingga diterjemahkan menjadi perkalian (dari transformasi Fourier (invers) yang sesuai) dalam domain waktu.
MBaz
17

Peringatan: sertakan beberapa riwayat, surat-surat lama (saya suka mereka) dan kartu punch!

a=0.2

y(n)=y(n1)+a[x(n)y(n1)],
y(n)=ax(n)+(1a)y(n1).

Versi pertama di atas kurang alami, tetapi menghindari satu kali lipat, dan entah bagaimana lebih efisien. Kedua formula menghasilkan filter respons impuls linier , kausal , dan tak terbatas . Cerita kembali ke dan melalui Poisson, Kolmogorov-Zurbenko Filter Adaptif , Brown (Perkiraan Statistik untuk Pengendalian Persediaan. McGraw-Hill, 1959), Holt (1957) dan Winters (1960). Ini diimplementasikan sebagai skema penyaringan rekursif yang dikenal dengan nama yang berbeda di seluruh literatur:

  • filter low-pass eksponensial urutan pertama rata - rata ,
  • rata-rata eksponensial,
  • pemulusan eksponensial ,
  • exponential moving average (EMA),
  • moving average tertimbang secara eksponensial (EWMA),
  • Penghalusan Eksonensial Sederhana (linier) Brown (kadang-kadang disebut SES),
  • Model ARIMA (0,1,1) .

"Eksponensial" dalam nama terkait dengan respons impuls dengan perkembangan geometris, yang mengambil sampel peluruhan eksponensial: .h[n]=(1a)u[n]an

Sebagai catatan sejarah, Robert G. Brown dan Arthur D. Little menggunakan metode ini pada tahun 1956 dalam perataan eksponensial untuk memprediksi permintaan , tampaknya untuk industri tembakau. Sedikit lebih sejarah dan penjelasan dapat ditemukan di Holt-Winters Peramalan untuk Dummies (atau Pengembang) - Bagian I . Peter Zehna menawarkan ulasan kritis dalam Beberapa komentar tentang pemulusan eksponensial , 1966. Sebuah bab oleh R. Brown dalam Ensiklopedia Penelitian Operasi dan Ilmu Manajemen (buku Google) tanggal sejarah kembali ke tahun 1944, halaman yang dapat dibaca direproduksi di sini:

Perataan eksponensial, hal.  205, Ensiklopedia Penelitian Operasi dan Ilmu Manajemen

Perataan eksponensial, hal.  206, Ensiklopedia Penelitian Operasi dan Ilmu Manajemen

Banyak metode memperpanjang pemulusan ini, yang tidak memiliki validitas ketika data memiliki tren atau musiman. Beberapa di antaranya dikenal sebagai smoothing eksponensial ganda atau tripel, dan filter Holt-Winters .

Anda juga dapat memeriksa: Bagaimana cara "filter sederhana" ini bekerja?

Laurent Duval
sumber
1
Terima kasih, ini luar biasa. Seperti yang disebutkan, saya benar-benar baru dalam hal ini sehingga beberapa jawaban Anda akan membutuhkan penelitian lebih lanjut untuk saya hargai sepenuhnya, tetapi tentu saja menjawab pertanyaan saya dan kemudian beberapa. Jika tidak untuk yang lain, jawaban sebelumnya, ini juga tentunya layak diterima sebagai yang jawabannya.
Michael Bromley
1
Koreksi kecil, Winters 1 (960) harus Winters (1960) Saya kira
SGR
9

Apakah ada pendekatan yang lebih baik atau studi lebih lanjut tentang solusi yang harus saya perhatikan?

Pendekatan normal untuk meter audio adalah "detektor puncak lossy".

if new_value > current_value
  current_value = new_value;
else
 current_value = current_value * decay;  

Ini bereaksi dengan segera terhadap sinyal baru atau puncak atau transien, tetapi sinyal itu tetap hidup untuk sementara waktu sehingga menghasilkan gambar yang jauh lebih tidak sibuk. Decay harus berupa konstanta antara 0 dan 1. Ini mengontrol seberapa cepat bar dilakukan dengan 0 menjadi instan dan 1 tidak pernah.

Hilmar
sumber
Saya perhatikan bahwa ini memiliki kemiripan dengan tugas yang saya lakukan di perguruan tinggi, MIDI yang sangat nyaring terdengar (dibuat dalam tugas sebelumnya) ditingkatkan dengan menggabungkan (dan penskalaan untuk mencocokkan puncak dan durasi) sinyal catatan (sepenuhnya persegi panjang) dengan segitiga sinyal yang menggenjot produksinya sangat tajam (meskipun tidak secara instan), dan kemudian membusuk secara bertahap, untuk menghasilkan nada tajam yang mati “secara alami.” Peningkatan besar dalam suara lagu (Fur Elise dalam kasus ini).
KRyan
Saya kira Anda ingin menyimpannya new_valuejika lebih besar daricurrent_value * decay
user276648
6

Di sekitar lingkaran kontraktor DoD AS, filter khusus ini sering disebut "filter alfa", karena dapat ditandai dengan satu parameter yang secara tradisional bernama "alfa".

Secara langsung analog dengan filter low-pass RC analog sederhana.

Mereka sangat sederhana, memiliki keterbatasan serius, tetapi mereka memiliki keuntungan yang tidak dapat disangkal atas filter yang lebih kompleks (dan rumit!) Yang, jika Anda menghindari area masalah mereka, mereka menyelesaikan pekerjaan.

John R. Strohm
sumber
3

Seperti disebutkan dalam jawaban lain, ini adalah filter Rekursif Kutub Tunggal, jenis filter respon impuls tak terbatas (IIR).

Sumber yang bagus untuk informasi tentang ini dan fitur DSP lainnya adalah Steven W. Smith's The Scientist and Engineer's Guide to Digital Signal Processing : Infinite Impulse Response (IIR)

... setiap titik dalam sinyal output ditemukan dengan mengalikan nilai-nilai dari sinyal input dengan koefisien "a", mengalikan nilai yang sebelumnya dihitung dari sinyal output dengan koefisien "b", dan menambahkan produk bersama-sama .. Pemberitahuan bahwa tidak ada nilai untuk b0, karena ini sesuai dengan sampel yang sedang dihitung. Persamaan 19-1 disebut persamaan rekursi, dan filter yang menggunakannya disebut filter rekursif. Nilai "a" dan "b" yang menentukan filter disebut koefisien rekursi.

Asmund
sumber