1. Situazione originale
Ho un segnale originale come dati di n
canali di matrice di dati di colonna x:mxn (single)
, con m=120019
il numero di campioni e n=15
il numero di canali.
Inoltre, ho il segnale filtrato come matrice di dati di colonna filtrata x:mxn (single)
.
I dati originali sono principalmente casuali, centrati su zero, dai pickup del sensore.
Sotto MATLAB
, sto usando save
senza opzioni, butter
come filtro passa-alto, e single
per il casting dopo il filtraggio.
save
essenzialmente applicare una compressione GZIP livello 3 su un formato binario HDF5, quindi potremmo supporre che la dimensione del file sia un buon stimatore del contenuto delle informazioni , cioè massimo per un segnale casuale e vicino a zero per un segnale costante.
Il salvataggio del segnale originale crea un file da 2 MB ,
Il salvataggio del segnale filtrato crea un file da 5 MB (?!).
2. Domanda
Come è possibile che il segnale filtrato abbia una dimensione maggiore , considerando che il segnale filtrato ha meno informazioni, rimosso dal filtro?
3. Esempio semplice
Un semplice esempio:
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');
crea file da 6 MB , sia per il segnale originale che per quello filtrato, che è maggiore dei valori precedenti a causa dell'utilizzo di dati casuali puri.
In un certo senso, indica che il segnale filtrato è più casuale del segnale filtrato (?!).
4. Esempio di valutazione
Considera quanto segue:
- Un filtro creato da un segnale casuale dal rumore gaussiano e un segnale costante uguale a .
- Ignora il tipo di dati, ovvero usiamo solo
double
, - Ignora le dimensioni dei dati, ovvero usiamo un vettore di dati di colonna di 1 MB, , .
- Consideriamo il parametro come indice di casualità per i test:, senso è completamente casuale e pienamente costante.
- Considera un filtro Butterworth passa-alto con .
Il seguente codice:
%% 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;
Con il seguente diagramma come risultato:
Questa simulazione riproduce le condizioni del segnale filtrato che ha sempre una dimensione notoriamente maggiore rispetto al segnale originale, il che contraddice il fatto che un segnale filtrato ha meno informazioni, rimosso dal filtro.