Apa efek dari aliasing pada besarnya autokorelasi?

8

Saya punya pertanyaan tentang efek aliasing pada besarnya autokorelasi. Dari simulasi di MATLAB, saya tidak melihat efek aliasing atau kebutuhan untuk filter anti-alias ketika saya mengambil besarnya autokorelasi. Yang berarti saya dapat menggarisbawahi data dan kemudian mengambil autokorelasi. Ada sebuah makalah "Efek Mengasingkan pada Perkiraan Moment Spektral Berasal dari Fungsi Autokorelasi Lengkap" yang mengatakan sesuatu seperti apa yang saya klaim. Adakah yang bisa memberi tahu saya jika saya melakukan kesalahan?

Hossein
sumber

Jawaban:

4

Menghancurkan sebelum menghitung autokorelasi, dengan adanya noise, lebih rendah daripada menghitung autokorelasi menggunakan dataset lengkap. Asumsikan bahwa sinyal yang menarik tertanam dalam white noise. Vektor terdiri dari sampel dari proses acak diskrit. Fungsi autokorelasi vektor adalah:x[n],n=0,1,...,N1x[n]

Ax[k]=1Nki=0N1kx[i]x[i+k]

Artinya, adalah kelambatan yang digunakan untuk perhitungan autokorelasi. Dalam skenario yang Anda usulkan, Anda menghilangkan keluaran fungsi autokorelasi dengan faktor (yaitu Anda hanya menghitung fungsi untuk kelambatan ) dan membandingkan hasilnya dengan fungsi autokorelasi dihancurkan dengan faktor yang sama . Biarkan menjadi urutan yang dihilangkan; fungsi autokorelasi adalah:kD0,D,2D,...x[n]Dxd[n]

Axd[k]=DNki=0N1kDx[iD]x[(i+k)D]

(untuk kesederhanaan di sini, saya berasumsi bahwa adalah faktor dalam persamaan di atas)DN

Permintaan Anda dapat ditulis sebagai:

Ax[kD]?Axd[k]

1NkDi=0N1kDx[i]x[i+kD]?DNki=0N1kDx[iD]x[(i+k)D]

Melihat ini secara kualitatif, penjumlahan di sisi kiri memiliki lebih banyak istilah daripada rekannya di sisi kanan. Jika adalah stasioner orde kedua, maka nilai yang diharapkan dari setiap istilah dalam setiap jumlah adalah sama; tindakan rata-rata beberapa sampel yang memiliki nilai yang diharapkan sama meningkatkan rasio sinyal terhadap noise. Dinyatakan sedikit berbeda, Anda dapat menganggap istilah dalam setiap jumlah sebagai sampel dari proses acak baru:x[n]

y[n]=x[n]x[n+kD]

Karena noise yang ada dalam adalah putih, nilai yang diharapkan dari adalah autokorelasi sebenarnya dari sinyal yang menarik pada lag . Karenanya, kami ingin memperkirakan secara akurat nilai yang diharapkan dari . Metode kami untuk melakukannya adalah dengan menghitung rata-rata sampel; dapat dengan mudah diperlihatkan bahwa varians dalam penduga rata-rata sampel berkurang dengan ukuran sampel yang lebih besar, konvergen ke nilai aktual yang diharapkan karena jumlah sampel cenderung .x[n]y[n]kDy[n]

Jadi, jika ada white noise hadir dalam sinyal (yang sering terjadi), Anda akan mendapatkan perkiraan yang lebih baik dari statistik orde dua sinyal yang mendasarinya dengan menggunakan ukuran sampel yang lebih besar dalam perhitungan (ini mungkin terdengar secara intuitif jelas). Dalam konteks dua pendekatan Anda, ini dicapai dengan menggunakan sinyal penuh, tidak-dihancurkan dalam perhitungan autokorelasi dan menebangi sesudahnya (yaitu hanya menghitung hasil untuk nilai lag tertentu).

Jason R
sumber
Terima kasih banyak. Anda benar tetapi dalam kasus sinyal saya itu bukan masalah dominan. Masalah saya kebanyakan adalah efek dari aliasing. Anda menjelaskan bahwa sinyal non-decimate penuh bisa lebih baik tetapi jika kita akan mengurangi efek aliasing kita harus mengambil lebih banyak sampel seperti dua (3) kali jumlah sampel dan itu benar-benar meningkatkan kompleksitas.
Hossein
2

Agak aneh bagi saya. Skrip Matlab di bawah membandingkan "autokorelasi downsampled" dengan "autokorelasi sinyal downsampled". Untuk gelombang sinus ganda ini sebenarnya cukup dekat (kesalahan relatif sekitar -50dB) tetapi untuk white noise itu salah (kesalahan relatif> +6 dB). Meskipun mungkin ada beberapa keuntungan komputasi, tidak jelas bagi saya seberapa berguna autokorelasi downsampled bahkan dalam kasus gelombang sinus ganda. Puncak dalam spektrum masih muncul di tempat yang salah.

% script to check whether autocorrelation is immune to aliasing
% create two sine waves at 18k and 21k (assuming sample rate of 444.1k) 
n = 8192;
t = (0:n-1)'/44100;
x = sin(2*pi*t*21000)+sin(2*pi*t*18000);
% calculate autocorrelation of original signal and one that's downsampled
% by 4 and thus heavily aliased
y = xcorr(x,x);
y2 = xcorr(x(1:4:end),x(1:4:end));
d = y(4:4:end)-4*y2;
% calculate the error in dB
err = 10*log10(sum(d.^2)./sum(y2.^2));
fprintf('Dual sine wave relative error = %6.2f dB\n',err);

%% try the same thing for white noise
x = 2*rand(n,1)-1;
y = xcorr(x,x);
y2 = xcorr(x(1:4:end),x(1:4:end));
d = y(4:4:end)-4*y2;
err = 10*log10(sum(d.^2)./sum(y2.^2));
fprintf('White noise relative error = %6.2f dB\n',err);
Hilmar
sumber
Terima kasih banyak tetapi tempat puncak dalam autokorelasi penting bagi saya dan oleh karena itu saya tidak cukup yakin bahwa kode ini menunjukkan masalah saya. Tetapi seperti yang Anda tunjukkan saat spektrum berubah, kami menghadapi perubahan kecil dalam domain waktu yang mirip dengan yang dikatakan makalah.
Hossein
0

Untuk jenis input tertentu, efek frekuensi aliasing pada besarnya autokorelasi dapat diabaikan. Namun, saya tidak berpikir ini akan berlaku secara umum.

Misalnya, untuk input tanpa batas atau untuk white noise, pengambilan sampel kurang tidak akan memengaruhi bentuk autokorelasi (meskipun mungkin mengubah penskalaan dengan cara prediksi). Autokorelasi white noise adalah delta dan itu akan tetap menjadi delta jika sampel turun.

Sekarang, spektrum daya terkait dengan autokorelasi oleh transformasi fourier. Jadi, jika klaim Anda benar, Anda juga dapat mengklaim bahwa aliasing frekuensi tidak mengubah konten frekuensi input. Dan ini tidak benar. Tetapi mungkin ada pengecualian (kasus khusus).

niaren
sumber