Gefiltertes Signal gegen Dateikomprimierungsparadoxon

9

1. Ursprüngliche Situation

Ich habe ein ursprüngliches Signal als Spaltendatenmatrix nKanäle Daten x:mxn (single)mit m=120019der zahl der Proben und n=15der Anzahl der Kanäle.

Außerdem habe ich das gefilterte Signal als gefilterte Spaltendatenmatrix x:mxn (single).

Die Originaldaten stammen hauptsächlich von Sensoraufnehmern, die auf Null zentriert sind.

Unter MATLAB, verwende saveohne Optionen, butterals Hochpassfilter und singlezum Gießen nach dem Filtern.

saveWenden Sie im Wesentlichen eine GZIP-Level-3- Komprimierung über ein binäres HDF5-Format an. Daher können wir davon ausgehen, dass die Dateigröße ein guter Schätzer für den Informationsgehalt ist , dh maximal für ein zufälliges Signal und nahe Null für ein konstantes Signal.

  • Durch Speichern des ursprünglichen Signals wird eine 2-MB- Datei erstellt.

  • Durch Speichern des gefilterten Signals wird eine 5-MB- Datei erstellt (?!).

2. Frage

Wie ist es möglich, dass das gefilterte Signal eine größere Größe hat, wenn man bedenkt, dass das gefilterte Signal weniger Informationen enthält, die vom Filter entfernt werden?

3. Einfaches Beispiel

Ein einfaches Beispiel:

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');

erstellt 6MB Dateien, für das Original und gefilterte Signal sowohl für, die durch Verwendung von reinen Zufallsdaten größer als die vorherigen Werte.

In gewissem Sinne bedeutet dies, dass das gefilterte Signal zufälliger ist als das gefilterte Signal (?!).

4. Bewertungsbeispiel

Folgendes berücksichtigen:

  • xrN(0,1)xc1
  • Ignorieren Sie den Datentyp, dh verwenden Sie nur double,
  • n=125000m=1
  • ax=αxr+(1α)xcα=1α=0
  • wn=0.5

Der folgende Code:

%% 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;

Mit der folgenden Tabelle als Ergebnis: Geben Sie hier die Bildbeschreibung ein

Diese Simulation reproduziert den Zustand des gefilterten Signals, der immer eine notorisch größere Größe als das ursprüngliche Signal hat, was der Tatsache widerspricht, dass ein gefiltertes Signal weniger Informationen enthält, die vom Filter entfernt werden.

Brethlosze
quelle
6
Ich denke, Ihre Frage betrifft mehr den Komprimierungsalgorithmus als alles andere. Speichern Sie die beiden Dateien mit der Option -nocompression und überprüfen Sie die Bitmuster, die Sie unabsichtlich generieren. Ich vermute, dass Ihr Zufallssignal tatsächlich signifikante Wiederholungen enthält, die gut komprimieren, während die gefilterte Version dies nicht tut. Trotzdem interessant :)
zeFrenchy
1
Ohne Komprimierung haben alle Signale die gleiche Größe (1 MB), da Länge und Datentyp alle gleich sind. Ich werde es aber überprüfen. Ich gehe blind davon aus, dass die Komprimierung als Information funktioniert, also werde ich ein zusätzliches Bewertungsbeispiel für die Überprüfung dieses "Informations"
-Aspekts einfügen

Antworten:

5

+1 auf sehr interessantes und aufschlussreiches Experiment.

Einige Gedanken:

  1. Es ist nicht wahr, dass das gefilterte Signal weniger Informationen enthält. Dies hängt von Ihrem Eingangssignal, dem Filtertyp und der Grenzfrequenz ab.
    Wenn Sie das verrauschte Signal hochpassieren, entfernen Sie die sich langsam ändernden Komponenten. Dadurch besteht Ihr Signal aus "häufiger wechselnden Zufallszahlen" und ist somit zufälliger. Das hängt natürlich davon ab, ob Ihr Eingangssignal hohe Frequenzen enthält oder nicht. Ihr Eingang ist Rauschen, enthält also jede hohe Frequenz. Wenn Ihr Eingang jedoch ein geordneteres Signal ist, verliert er nach einer bestimmten HP-Grenzfrequenz einen großen Teil seiner Energie. Der Ausgang wird nahe Null, weniger zufällig, weniger groß. Ich denke, wenn Sie die Grenzfrequenz Ihres HP-Filters nach einem bestimmten Punkt ziemlich hoch erhöhen, verringert sich die Dateigröße.
    Ein anderes Experiment wäre, das Signal durch ein LP-Filter mit einer niedrigen Grenzfrequenz zu leiten und den Unterschied zu sehen.

  2. Basierend auf der gleichen Theorie in 1. leiten Sie Ihr Signal hoch, entfernen im Wesentlichen den Gleichstromteil xcund lassen ihn mit Rauschen zurück xr.

doubleE
quelle
2
Informationstheoretisch ist Ihre 1. mindestens halb falsch. Das gefilterte Signal muss weniger (oder höchstens die gleichen) Informationen enthalten als das ungefilterte.
Marcus Müller
2
@ MarcusMüller Da stimme ich Ihnen definitiv zu (offensichtliche Aussage), aber ich habe folgende Bedenken: Hatten Sie die Rollen der Impulsantwort des Filters vertauscht und das zufällige Eingangssignal (dh die (deterministische) Impulsantwort wird zur Eingabe für den Filter? Können wir jetzt mit einer zufälligen Impulsantwort immer noch sagen, dass die Informationen am Ausgang geringer sind als die Informationen am Eingang?
Fat32
1
@ Fat32 das ist ein interessanter Winkel! Wahrer Punkt. In diesem speziellen Fall würde ich argumentieren, dass wenn wir den LPF als das informationstragende Signal betrachten, wir feststellen würden, dass er überhaupt nur sehr wenige Informationen enthält (sehr korreliert, beabsichtigt und eher kurz).
Marcus Müller
1
@ Fat32 das ist ein schöner vorschlag. Wenn ich die FT des Signals komprimiere, sollte ich für einen verlustfreien Fall immer noch die gleiche Größe haben! (ohne Berücksichtigung der Tatsache, dass einige Teile des Spektrums zu weniger wertvollen, leicht zu verwerfenden Informationen führen könnten). Wenn nicht, hätten wir einen besseren Komprimierungsalgorithmus entdeckt, was ich ehrlich bezweifle :). Daher werde ich mit diesem Ansatz ein zweites Bewertungsbeispiel vorbereiten.
Brethlosze
1
@ MarcusMüller So einfach lässt sich das nicht verallgemeinern. Sie sollten Dinge definieren, um diese Aussage wahr zu machen. Angenommen, Sie haben ein System, das seine Eingabe zufällig sortiert. Wenn der Eingang DC ist, ist er zufällig. Ihr Ausgang hat also mehr Entropie. (Es ist nicht schwer vorstellbar, dass nur ein Kommunikationskanal, der dem Eingang Rauschen hinzufügt, dies tun würde.) Bei LTI-Systemen wissen wir, wie sie Rauschen behandeln Das ist also ein anderes Thema. Die Informationstheorie stützt ihre Ergebnisse nicht darauf, ob ein System LTI ist. Ich bin zwar kein Experte, aber ich denke, das ist nicht wahr.
doubleE
3

Ich würde 2 Dinge überprüfen:

  1. Wenn der angewendete Filter Tiefpassfilter oder ein anderer Filter ist. Wenn es sich um einen Filter handelt, der das Rauschen verstärkt, ist das Ergebnis angemessen.
    Es scheint, dass Sie butter()in einer Form verwenden, die Hochpassfilter generiert. Da das Eingangssignal aus Rauschen besteht, verstärkt das Hochpassfilter es und führt zu einer weniger komprimierbaren Datei. Versuchen Sie beispielsweise, [hb, ha] = butter(2, 0.5, 'low');wo eine bessere Komprimierung von Daten unterstützt werden soll (Unterdrückung von Rauschen). Wenn Sie noch weiter gehen möchten, verwenden Sie [hb, ha] = butter(2, 0.1, 'low');.
  2. Stellen Sie sicher, dass auch die Ausgabe des Filterbefehls erfolgt single. Ich denke, da Ihr Filter doubleder Ausgang ist, wird doubledaher die Größe des Signals multipliziert. In Ihrem Code ersetzen xf = filter(hb, ha, x);mit xf = single(filter(hb, ha, x));. Was sind die Ergebnisse jetzt?
Royi
quelle
1
@hyprfrcb, versuchen Sie das gleiche mit butter(2, 0.5, 'low');. Was passiert dann?
Royi
1
Damit ist das Problem gelöst. Sie verwenden einen Hochpassfilter, der das Rauschen verstärkt, sodass Sie eine größere Datei erhalten, da das Rauschen weniger komprimierbar ist. Viel Spaß ...
Royi
1
Sie können versuchen [hb, ha] = butter(2, 0.1, 'low');zu sehen, dass die Dateigröße noch kleiner wird.
Royi
1
Ein auf Rauschen angewendeter Hochpass verschlechtert normalerweise das SNR in einem Signal. Das haben Sie oben getan. Das Hochpassfilter verstärkte die Rauschenergie, was bedeutet, dass die Daten weniger komprimierbar sind.
Royi
1
Ein zufälliges Signal, das von einem LPF-Filter gefiltert wird, erzeugt eine Korrelation zwischen seinen Abtastwerten, daher ist es auf einen höheren Pegel komprimierbar. Es funktioniert nicht mit HPF, das mit zufälligen Signalen arbeitet.
Royi