フィルタリングされた信号とファイル圧縮のパラドックス


9

1.元の状況

元の信号を、サンプルの数とチャネルの数をn含む列データマトリックスチャネルデータx:mxn (single)として持っm=120019ていn=15ます。

また、フィルターされた信号をフィルターされた列データマトリックスとして持っていますx:mxn (single)

元のデータは主にランダムで、センサーピックアップからのゼロを中心にしています。

の下でMATLABsaveオプションなしでbutter、ハイパスフィルターとして、およびsingleフィルタリング後のキャストに使用しています。

save本質的にはバイナリHDF5フォーマットにGZIPレベル3 圧縮を適用するため、ファイルサイズは情報コンテンツの優れた推定値、つまりランダム信号では最大、一定信号ではゼロに近いと想定できます。

  • 元の信号を保存すると2MBのファイルが作成され、

  • フィルタリングされた信号を保存すると、5MBのファイル(?!)が作成されます。

2.質問

フィルター処理された信号に含まれる情報が少なく、フィルターによって削除されることを考えると、フィルター処理された信号のサイズが大きくなる可能性はありますか?

3.簡単な例

簡単な例:

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

元の信号とフィルター処理された信号の両方に対して6 MBのファイルを作成します。これは、純粋なランダムデータを使用するため、以前の値よりも大きくなります。

ある意味では、フィルター処理された信号がフィルター処理された信号よりもランダムであることを示します(?!)。

4.評価例

以下を検討してください。

  • ランダム信号から作成されたフィルター バツr ガウスノイズから N01、および一定の信号 バツc に等しい 1
  • データ型、すなわちのみレットの使用を無視しdouble
  • データサイズを無視します。つまり、1 MBの1つの列データベクトルを使用します。 =125000メートル=1
  • 考えてみましょう aテスト用のランダム性インデックスとしてのパラメータ:バツ=αバツr+1αバツc、意味 α=1 完全にランダムであり、 α=0 完全に一定。
  • ハイパスバターワースフィルターを考えます。 w=0.5

次のコード:

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

その結果、次のグラフが表示されます。 ここに画像の説明を入力してください

このシミュレーションは、元の信号よりも常に悪名高い大きなサイズのフィルター処理された信号の状態を再現します。これは、フィルター処理された信号の情報が少なくなり、フィルターによって削除されるという事実と矛盾します。


6
あなたの質問は、何よりも圧縮アルゴリズムに関するものだと思います。-nocompressionオプションを使用して2つのファイルを保存してから、無意識に生成しているビットパターンを確認します。私の推測では、ランダムな信号には実際には十分に圧縮する重要な繰り返しが含まれていますが、フィルター処理されたバージョンには含まれていません。それでも興味深い:)
zeFrenchy 2017

1
圧縮を行わない場合、長さとデータタイプがすべて同じであるため、すべての信号のサイズは同じ1MBになります。私もチェックします。私は盲目的に圧縮が情報として機能すると想定しているので、この「情報」の側面をチェックするために追加の評価例のひねりを加えます...
Brethlosze

回答:


5

非常に興味深く洞察に満ちた実験で+1。

いくつかの考え:

  1. フィルター処理された信号の情報が少ないというのは事実ではありません。入力信号、フィルターの種類、カットオフ周波数によって異なります。
    ノイズの多い信号をハイパスすると、ゆっくりと変化するコンポーネントが削除されます。これにより、信号は「より頻繁に変化する乱数」で構成され、よりランダムになります。もちろん、入力信号に高周波が含まれているかどうかによって異なります。入力はノイズなので、あらゆる高周波が含まれています。しかし、入力がより秩序だった信号である場合、特定のHPカットオフ周波数の後でエネルギーの多くが失われ、出力はゼロに近くなり、ランダムさが少なくなり、サイズが小さくなります。HPフィルターのカットオフ周波数をかなり高くすると、ある時点でファイルサイズが小さくなります。
    もう1つの実験は、信号を低カットオフ周波数のLPフィルターに通して、違いを確認することです。

  2. 1.と同じ理論に基づいて、信号をハイパスし、本質的にDC部分を削除し、xcノイズを残しますxr


2
情報理論上、あなたの1.は少なくとも半分間違っています。フィルタリングされた信号に、フィルタリングされていない信号よりも少ない(または多くても同じ)情報が含まれている必要あります。
マーカス・ミュラー

2
@MarcusMüller私は明確にこれに同意します(明白なステートメント)が、私は次の懸念を抱いています:フィルターのインパルス応答と入力ランダム信号の役割を交換しましたか(つまり、(確定的)インパルス応答がフィルターへの入力になります)今はランダムなインパルス応答があるため)、出力の情報は入力の情報よりも少ないと言えますか?
Fat32 2017

1
@ Fat32 それは面白い角度です!真のポイント。この特定のケースでは、LPFを情報伝達信号と見なした場合、LPFに含まれる情報が非常に少ないことがわかります(設計上、非常に相関があり、かなり短い)。
マーカス・ミュラー

1
@ Fat32これは素晴らしい提案です。信号のFTを圧縮すると、ロスレスの場合でも、同じサイズになるはずです!(スペクトルの一部が情報の価値が低くなり、破棄が容易になるという事実を無視して)。そうでなければ、私はより良い圧縮アルゴリズムを発見したでしょう。そこで、このアプローチで2つ目の評価例を準備します。
Brethlosze 2017

1
@MarcusMüllerそれを単純に一般化することはできません。あなたはそのステートメントを真実にするためのものを定義する必要があります。入力をランダム化するシステムがあるとします。入力がDCの場合はランダムになるため、出力のエントロピーが大きくなります(入力にノイズを追加する通信チャネルだけがこれを行うと想像するのは難しくありません)。LTIシステムの場合、ノイズの処理方法を知っています。 、それは別のトピックです。情報理論は、その結果がシステムがLTIであるかどうかに基づいていません。それでも私は確かに専門家ではありませんが、そうではないと思います。
doubleE 2017

3

2つのことを確認します。

  1. 適用されるフィルターがローパスフィルターまたは別のフィルターの場合。ノイズを増幅するフィルターであれば、妥当な結果です。ハイパスフィルターを生成する形で
    使っているようですbutter()。入力信号はノイズで構成されているため、ハイパスフィルターはそれを増幅し、ファイルの圧縮率を低下させます。たとえば[hb, ha] = butter(2, 0.5, 'low');、データのより良い圧縮(ノイズの抑制)をサポートする場所を試してください。さらに遠くに行きたい場合は使用してください[hb, ha] = butter(2, 0.1, 'low');
  2. filterコマンドの出力singleも同様であることを確認します。フィルターがdouble出力なdoubleので、信号のサイズが乗算されると思います。あなたのコードでは、交換してくださいxf = filter(hb, ha, x);xf = single(filter(hb, ha, x));。現在の結果はどうですか?

1
@hyprfrcb、同じことをで試してくださいbutter(2, 0.5, 'low');。次に何が起こりますか?
Royi 2017

1
これで問題は解決しました。ノイズを増幅するハイパスフィルターを使用しているため、ノイズの圧縮率が低いため、ファイルが大きくなります。お楽しみください
Royi 2017

1
[hb, ha] = butter(2, 0.1, 'low');ファイルサイズがさらに小さくなることを確認することができます。
Royi 2017

1
ノイズにハイパスを適用すると、通常、信号のSNRが低下します。これはあなたが上でしたことです。ハイパスフィルターはノイズエネルギーを増幅しました。これは、データの圧縮率が低いことを意味します。
Royi 2017

1
LPFフィルターでフィルター処理されたランダム信号は、サンプル間に相関を作成するため、より高いレベルに圧縮できます。ランダム信号で動作するHPFでは動作しません。
Royi 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.