Sinyal Difilter vs Paradox Kompresi File

9

1. Situasi Asli

Saya memiliki sinyal asli sebagai data kolom, nsaluran data x:mxn (single), dengan m=120019jumlah sampel dan n=15jumlah saluran.

Juga, saya memiliki sinyal yang difilter sebagai matriks data kolom yang difilter x:mxn (single).

Data asli sebagian besar acak, berpusat di nol, dari pickup sensor.

Di bawah MATLAB, saya menggunakan savetanpa opsi, buttersebagai filter highpass, dan singleuntuk casting setelah penyaringan.

savepada dasarnya menerapkan kompresi level-3 GZIP atas format HDF5 biner, maka kita dapat mengasumsikan ukuran file adalah penduga yang baik dari isi informasi , yaitu maksimum untuk sinyal acak, dan mendekati nol untuk sinyal konstan.

  • Menyimpan sinyal asli menciptakan file 2MB ,

  • Menyimpan sinyal yang difilter membuat file 5MB (?!).

2. Pertanyaan

Bagaimana mungkin sinyal yang disaring memiliki ukuran lebih besar, mengingat sinyal yang disaring memiliki informasi lebih sedikit , dihilangkan oleh filter?

3. Contoh Sederhana

Contoh sederhana:

n=120019; m=15;t=(0:n-1)'; 
x=single(randn(n,m));
[b,a]=butter(2,10/200,'high'); 
 xf=filter(b,a,x);
save('x','x'); save('xf','xf');

membuat file 6MB , baik untuk sinyal asli dan yang difilter, yang lebih besar dari nilai sebelumnya karena menggunakan data acak murni.

Dalam arti tertentu, menunjukkan bahwa sinyal yang difilter lebih acak daripada sinyal yang difilter (?!).

4. Contoh Evaluatif

Pertimbangkan yang berikut ini:

  • Filter dibuat dari sinyal acak dari gaussian noise , dan sinyal konstan sama dengan .xrN(0,1)xc1
  • Abaikan tipe data, yaitu mari kita gunakan saja double,
  • Abaikan ukuran data, yaitu mari kita gunakan satu vektor data kolom 1MB, , .n=125000m=1
  • Mari kita mempertimbangkan parameter sebagai Indeks Randomness untuk pengujian: , yang berarti sepenuhnya acak dan sepenuhnya konstan.ax=αxr+(1α)xcα=1α=0
  • Pertimbangkan filter highpass butterworth dengan .wn=0.5

Kode berikut:

%% Data
n=125000;m=1;
t=(0:n-1)';
[hb,ha]=butter(2,0.5,'high');
d=100;
a=logspace(-6,0,d);
xr=randn(n,m);xc=ones(n,m);
b=zeros(d,2);
for i=1:d
    x=a(i)*xr+(1-a(i))*xc;
    xf=filter(hb,ha,x);
    save('x1.mat','x'); save('x2.mat','xf');
    b1=dir('x1.mat'); b2=dir('x2.mat');
    b(i,1)=b1.bytes/1024;
    b(i,2)=b2.bytes/1024;
    i
end
%% Plot
semilogx(a,b);
title('Data Size for Filtered Signals');
legend({'original','filtered'},'location','southeast');
xlabel('Random Index \alpha');
ylabel('FIle Size [kB]');
grid on;

Dengan bagan berikut sebagai hasilnya: masukkan deskripsi gambar di sini

Simulasi ini mereproduksi kondisi sinyal yang difilter selalu memiliki ukuran yang lebih besar daripada sinyal asli, yang bertentangan dengan fakta bahwa sinyal yang difilter memiliki informasi lebih sedikit , dihilangkan oleh filter.

Brethlosze
sumber
6
Saya pikir pertanyaan Anda lebih tentang algoritma kompresi daripada yang lainnya. Simpan dua file dengan opsi -nocompression kemudian periksa pola bit yang Anda tanpa disadari menghasilkan. Dugaan saya adalah bahwa Anda sinyal acak sebenarnya mengandung pengulangan yang signifikan yang kompres dengan baik, sedangkan versi yang difilter tidak.
Tetap
1
Tanpa kompresi, semua sinyal memiliki ukuran yang sama, 1MB, karena panjang dan tipe datanya sama. Saya akan memeriksa. Saya secara membabi buta menganggap bahwa kompresi berfungsi sebagai informasi, jadi saya akan memberikan tambahan contoh evaluatif untuk memeriksa aspek "informasi" ini ...
Brethlosze

Jawaban:

5

Memberi +1 pada eksperimen yang sangat menarik dan berwawasan luas.

Beberapa pemikiran:

  1. Tidak benar bahwa sinyal yang disaring memiliki informasi yang lebih sedikit. Itu tergantung pada sinyal input Anda, jenis filter, dan frekuensi cut-off.
    Ketika Anda melewati sinyal berisik, Anda melepaskan komponen yang berubah perlahan. Itu membuat sinyal Anda terdiri dari 'angka acak yang lebih sering berubah', sehingga lebih acak. Tentu saja, itu tergantung apakah sinyal input Anda mengandung frekuensi tinggi atau tidak. Masukan Anda berisik, sehingga berisi setiap frekuensi tinggi. Tetapi jika input Anda adalah sinyal yang lebih teratur, ia akan kehilangan banyak energinya setelah frekuensi cut-off HP tertentu, output menjadi mendekati nol, kurang acak, lebih sedikit ukuran. Saya pikir jika Anda meningkatkan frekuensi cut-off filter HP Anda cukup tinggi, setelah titik tertentu, ukuran file akan berkurang.
    Satu percobaan lain akan melewati sinyal melalui filter LP dengan frekuensi cutoff rendah dan melihat perbedaannya.

  2. Berdasarkan teori yang sama di 1., Anda melintas sinyal Anda, pada dasarnya menghapus bagian DC xc,, dan meninggalkannya dengan noise xr.

melipatgandakan
sumber
2
Informasi-secara teoritis, 1. Anda setidaknya setengah salah. Sinyal yang disaring harus mengandung lebih sedikit (atau paling banyak, informasi yang sama) seperti yang tidak disaring.
Marcus Müller
2
@ MarcusMüller Saya pasti setuju dengan Anda tentang ini (pernyataan yang jelas) tetapi saya memiliki keprihatinan berikut: apakah Anda menukar peran respons impuls filter dan input sinyal acak (yaitu, respon impuls (deterministik) menjadi input ke filter dengan respon impuls acak sekarang) dapatkah kita masih mengatakan bahwa informasi pada output lebih kecil daripada informasi pada input?
Fat32
1
@ Fat32 itu adalah sudut yang menarik! Titik benar. Dalam kasus khusus ini saya berpendapat bahwa jika kita menganggap LPF sebagai sinyal pembawa informasi, maka kita akan menemukan itu mengandung sangat sedikit info sama sekali (sangat berkorelasi, dengan desain, dan agak pendek).
Marcus Müller
1
@ Fat32 ini saran yang bagus. Jika saya memampatkan FT sinyal, untuk kasus lossless, saya harus tetap memiliki ukuran yang sama! (mengabaikan fakta bahwa beberapa bagian dari spektrum dapat menyebabkan informasi yang kurang bernilai, mudah dibuang,). Jika tidak, kami akan menemukan algoritma kompresi yang lebih baik, yang saya ragu dengan jujur ​​:). Jadi saya akan menyiapkan contoh evaluasi kedua dengan pendekatan ini.
Brethlosze
1
@ MarcusMüller Tidak bisa digeneralisasikan secara sederhana. Anda harus mendefinisikan hal-hal untuk membuat pernyataan itu benar. Asumsikan Anda memiliki sistem yang mengacak inputnya. Ketika input adalah DC, itu membuatnya acak, Jadi output Anda memiliki lebih banyak entropi. (Tidak sulit membayangkan bahwa, hanya saluran komunikasi yang menambahkan noise ke input akan melakukan ini.) Untuk sistem LTI, kami tahu bagaimana mereka memperlakukan noise , jadi itu topik yang berbeda. Teori informasi tidak mendasarkan hasilnya pada apakah suatu sistem LTI. Masih saya bukan ahli untuk memastikan, tetapi saya pikir itu tidak benar.
gandakan
3

Saya akan memeriksa 2 hal:

  1. Jika filter yang digunakan adalah Low Pass Filter atau filter lain. Jika itu adalah filter yang memperkuat kebisingan, hasilnya masuk akal.
    Tampaknya Anda menggunakan butter()dalam bentuk yang menghasilkan Filter Pass Tinggi. Karena sinyal input terdiri dari noise, High Pass Filter menguatkannya dan menyebabkan file menjadi lebih tidak kompresibel. Misalnya, coba di [hb, ha] = butter(2, 0.5, 'low');mana itu harus mendukung kompresi data yang lebih baik (Penindasan kebisingan). Jika Anda ingin menggunakan lebih jauh [hb, ha] = butter(2, 0.1, 'low');.
  2. Verifikasi bahwa output dari perintah filter singlejuga. Saya pikir karena filter Anda adalah doubleoutput doublemaka ukuran sinyal dikalikan. Dalam kode Anda, ganti xf = filter(hb, ha, x);dengan xf = single(filter(hb, ha, x));. Apa hasilnya sekarang?
Royi
sumber
1
@ hyprfrcb, Coba sama dengan butter(2, 0.5, 'low');. Lalu apa yang terjadi?
Royi
1
Jadi masalah terpecahkan. Anda menggunakan filter High Pass yang memperkuat noise sehingga Anda mendapatkan file yang lebih besar karena noise kurang kompresibel. Selamat menikmati ...
Royi
1
Anda dapat mencoba [hb, ha] = butter(2, 0.1, 'low');melihat ukuran file menjadi lebih kecil.
Royi
1
High Pass yang diterapkan pada Noise biasanya memburuk SNR dalam sinyal. Inilah yang Anda lakukan di atas. Filter High Pass memperkuat energi noise yang berarti data kurang kompresibel.
Royi
1
Sinyal acak yang disaring oleh filter LPF menciptakan korelasi antara sampelnya, sehingga dapat dikompresi ke tingkat yang lebih tinggi. Ini tidak berfungsi dengan HPF yang beroperasi pada sinyal acak.
Royi