Berikut ini adalah frekuensi sinusoid f = 236.4 Hz
(panjangnya 10 milidetik; memiliki N=441
poin pada laju sampling fs=44100Hz
) dan DFT-nya, tanpa zero-padding :
Satu-satunya kesimpulan yang dapat kita berikan dengan melihat DFT adalah: "Frekuensi kira-kira 200Hz".
Berikut adalah sinyal dan DFT-nya, dengan zero-padding yang besar :
Sekarang kita dapat memberikan kesimpulan yang jauh lebih tepat : "Dengan melihat dengan cermat pada maksimum spektrum, saya dapat memperkirakan frekuensi 236Hz" (Saya memperbesar dan menemukan maksimum sudah dekat 236).
Pertanyaan saya adalah: mengapa kita mengatakan bahwa "zero-padding tidak meningkatkan resolusi" ? (Saya sudah sering melihat kalimat ini, lalu mereka berkata "itu hanya menambah interpolasi")
=> Dengan contoh saya, zero-padding membantu saya menemukan frekuensi yang tepat dengan resolusi yang lebih tepat!
Jawaban:
Resolusi memiliki definisi yang sangat spesifik dalam konteks ini. Ini mengacu pada kemampuan Anda untuk menyelesaikan dua nada terpisah pada frekuensi terdekat. Anda telah meningkatkan laju sampel estimasi spektrum Anda, tetapi Anda belum memperoleh kemampuan untuk membedakan antara dua nada yang mungkin berada, misalnya, 236 Hz dan 237 Hz. Sebagai gantinya, mereka akan "melebur menjadi satu" dalam satu gumpalan, tidak peduli berapa banyak bantalan nol yang Anda aplikasikan.
Solusi untuk meningkatkan resolusi adalah dengan mengamati sinyal untuk periode waktu yang lebih lama, kemudian gunakan DFT yang lebih besar. Ini akan menghasilkan lobus utama yang lebarnya berbanding terbalik dengan ukuran DFT, jadi jika Anda mengamati cukup lama, Anda sebenarnya dapat menyelesaikan frekuensi beberapa nada yang berdekatan satu sama lain.
-
Untuk melihat bagaimana ini berlangsung, berikut adalah plot FFT yang diperbesar dari penambahan dua sinyal: sinusoid asli Anda, dan yang berbeda frekuensinya dari 0 hingga 100 Hz.
Hanya menuju ujung perbedaan 100Hz dari plot (sisi kiri di sini) Anda dapat membedakan (menyelesaikan) keduanya.
Kode Scilab untuk membuat plot di bawah ini.
sumber
x(n)
lebih lama (dengan0
di akhir), saya menjagax(n)
panjang N, TAPI perubahan ada di sini: alih-alihDFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)
untukk=0,1,...,N-1
, saya lakukanDFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))
untukk=0,1,...,10*N-1
... Ini seperti menambahkan lebih banyak tempat sampah (10 N
tempat sampah daripadaN
tempat frekuensi) tetapi tetap samax(n)
panjangnyaN
. Sekarang nampan akan 10 hz, 20 hz, ..., 100 hz, 110 hz, 120 hz, ..... => Apakah sama dengan zero-padding: tidak ada resolusi tambahan nyata, tetapi hanya interpolasi?DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))
untukk=0,1,...,10*N-1
dan menjagax(n)
panjangN
yang sama memberikan hasil yang sama dari nol-padding: tidak benar-benar lebih banyak resolusi, tetapi hanya interpolasi?Istilah "resolusi" memiliki banyak makna, yang dapat membingungkan orang yang mencoba berkomunikasi ketika menggunakan dua makna yang berbeda.
Dalam pengertian optik, untuk dapat menyelesaikan dua titik terdekat yang terpisah dengan jelas (atau dua puncak yang berdekatan dalam spektrum) alih-alih satu gumpalan buram, bantalan nol tidak akan membantu. Ini adalah makna yang paling mungkin digunakan ketika menyatakan bahwa zero-padding tidak meningkatkan resolusi.
Jika kebutuhan seseorang akan resolusi memerlukan penurunan (misalnya penurunan minimum 3 dB) di antara puncak spektral, maka resolusi akan lebih rendah daripada jarak bin FFT, mis. Bahkan bukan Fs / N, tetapi 2X hingga 3X itu, atau lebih, tergantung pada windowing yang digunakan. Persyaratan resolusi yang lebih lemah mungkin hanya jarak frekuensi vektor basis ortogonal DFT, misalnya Fs / N.
Dalam hal titik plot, ya, zero-padding akan memberi Anda lebih banyak poin untuk plot, seperti dalam resolusi DPI (plot poin per inci). Itu mungkin membuatnya lebih mudah untuk memilih ekstrem dengan bola mata. Namun mereka adalah poin yang sama yang akan Anda dapatkan dengan melakukan interpolasi plot berkualitas sangat tinggi (interpolasi Sinc) tanpa zero-padding, sehingga mereka benar-benar menambahkan tidak ada informasi yang tidak dapat dihitung jika tidak tanpa zero-padding.
Dalam hal pelacakan pitch, interpolasi parabola atau Sinc (interpolasi antara nampan hasil FFT) dari hasil FFT bukan-nol-jendela dapat memberikan Anda hasil yang sama baiknya dengan dari plot FFT nol-empuk yang lebih komputatif dan lebih komputasional. Jadi zero-padding memberi Anda hasil pelacakan pitch yang "lebih baik" daripada pick picking non-zero-padded dan non-interpolasi, tetapi seringkali jauh lebih efisien daripada hanya menggunakan interpolasi.
Jika Anda menambahkan noise pada contoh Anda, tetapi sedikit kurang dari sinyalnya, Anda akan menemukan bahwa puncak zero-padded dapat sama tidak akuratnya dengan puncak padded non-nol. Jadi, dalam kasus yang lebih umum, Anda mungkin tidak menemukan frekuensi "benar" dengan akurasi lebih dari sebelumnya. Zero-padding hanya menginterpolasi hasil yang tidak akurat karena kebisingan, yang merupakan alasan lain mengapa dikatakan tidak meningkatkan resolusi.
sumber
f=236.4 hz
yang sama10ms
hanya pada waktu yang sama tetapi dengan fs = 192khz, bukan 44.1khz: Apakah resolusi frekuensi yang sebenarnya lebih tinggi?sinc
kurva-seperti di DFT lebih sempit atau tidak? Jika tidak, ini berarti bahwa meningkatkan laju sampel tidak akan menambah resolusi (dalam arti kemampuan untuk menyelesaikan frekuensi)