Mengapa kita mengatakan bahwa "zero-padding tidak benar-benar meningkatkan resolusi frekuensi"

12

Berikut ini adalah frekuensi sinusoid f = 236.4 Hz(panjangnya 10 milidetik; memiliki N=441poin pada laju sampling fs=44100Hz) dan DFT-nya, tanpa zero-padding :

masukkan deskripsi gambar di sini

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 :

masukkan deskripsi gambar di sini

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!

Basj
sumber
1
Cara lain untuk memikirkan pertanyaan yang sangat lama ini: jika Anda tidak memiliki plot deret waktu sama sekali, tetapi hanya fft 'beresolusi rendah' ​​- Anda dapat mengubahnya menjadi deret waktu, nol-pad, dan kembali. -fft untuk mengeluarkan 236Hz. Jadi, 'low-res' fft harus berisi semua informasi yang sama dengan smooth.
Joshua R.

Jawaban:

19

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.

masukkan deskripsi gambar di sini

f = 236.4;
d = 10;
N=441;
fs=44100;
extra_padding = 10000; 

t=[0:1/fs:(d/1000-1/fs)]
ff = [0:(N+extra_padding-1)]*fs/(N+extra_padding);

x = sin(2*%pi*f*t);

XX = [];

for delta_f = [0:100];
    y = sin(2*%pi*(f+delta_f)*t);
    FFTX = abs(fft([x+y zeros(1,extra_padding)]));
    XX = [XX; FFTX];
end

mtlb_axis([0 1300 0 500])

figure(1);
clf
[XXX,YYY] = meshgrid(ff,0:100);
mesh(XXX(1:100,[50:90]),YYY(1:100,[50:90]),XX(1:100,[50:90]))
Jason R
sumber
terima kasih! ok jadi zero-padding tidak akan membantu menyelesaikan dua nada terpisah pada frekuensi terdekat; Namun, dalam contoh saya, ini dapat berguna untuk menemukan puncak spektrum, dan dengan demikian menemukan frekuensi fondamental dari nada (misalnya untuk tujuan pelacakan nada yang akurat)
Basj
saya pikir "zero padding tidak meningkatkan resolusi" akan berarti "Anda tidak dapat melakukan pelacakan pitch yang akurat dengan bantuan zero-padding" (itu tidak benar di sini, contohnya menunjukkan adalah mungkin untuk mendeteksi beberapa pitch secara akurat)
Basj
Saya pikir Anda mengerti dengan benar. Zero-padding memang memiliki kegunaannya, seperti dalam estimasi lokasi puncak dari spektrum kasar. Itu bukan peluru perak.
Jason R
1
Saya hanya mencoba sesuatu yang lain selain zero-padding, tetapi terkait. Alih-alih membuat x(n)lebih lama (dengan 0di akhir), saya menjaga x(n)panjang N, TAPI perubahan ada di sini: alih-alih DFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)untuk k=0,1,...,N-1, saya lakukan DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))untuk k=0,1,...,10*N-1... Ini seperti menambahkan lebih banyak tempat sampah ( 10 Ntempat sampah daripada Ntempat frekuensi) tetapi tetap sama x(n)panjangnya N. 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?
Basj
Apakah menambahkan lebih banyak nampan (10N bukan N): DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))untuk k=0,1,...,10*N-1dan menjaga x(n)panjang Nyang sama memberikan hasil yang sama dari nol-padding: tidak benar-benar lebih banyak resolusi, tetapi hanya interpolasi?
Basj
13

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.

hotpaw2
sumber
Hanya untuk diingat: apa yang terjadi jika saya memiliki sinusoid f=236.4 hzyang sama 10mshanya pada waktu yang sama tetapi dengan fs = 192khz, bukan 44.1khz: Apakah resolusi frekuensi yang sebenarnya lebih tinggi?
Basj
Menambah laju sampel akan memberi Anda lebih banyak tempat sampah frekuensi tinggi, tetapi tempat sampah DFT yang sama di dekat tempat frekuensi bunga rendah,
hotpaw2
1
Apakah meningkatkan laju sampel akan membuat sinckurva-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)
Basj
1/TT
Lebar frekuensi dalam Sinc terkait dengan lebar jendela data dalam waktu, nol padding atau mengubah laju sampel tidak benar-benar mempengaruhinya (selain itu masalah sampling atau kuantisasi).
hotpaw2