1.元の状況
元の信号を、サンプルの数とチャネルの数をn
含む列データマトリックスチャネルデータx:mxn (single)
として持っm=120019
ていn=15
ます。
また、フィルターされた信号をフィルターされた列データマトリックスとして持っていますx:mxn (single)
。
元のデータは主にランダムで、センサーピックアップからのゼロを中心にしています。
の下でMATLAB
、save
オプションなしで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.評価例
以下を検討してください。
- ランダム信号から作成されたフィルター ガウスノイズから 、および一定の信号 に等しい 。
- データ型、すなわちのみレットの使用を無視し
double
、 - データサイズを無視します。つまり、1 MBの1つの列データベクトルを使用します。 、 。
- 考えてみましょう テスト用のランダム性インデックスとしてのパラメータ:、意味 完全にランダムであり、 完全に一定。
- ハイパスバターワースフィルターを考えます。 。
次のコード:
%% 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;
このシミュレーションは、元の信号よりも常に悪名高い大きなサイズのフィルター処理された信号の状態を再現します。これは、フィルター処理された信号の情報が少なくなり、フィルターによって削除されるという事実と矛盾します。