1. Situación original
Tengo una señal original como una columna de matriz de datos de n
canales de datos x:mxn (single)
, con m=120019
el número de muestras y n=15
el número de canales.
Además, tengo la señal filtrada como una matriz de datos de columna filtrada x:mxn (single)
.
Los datos originales son principalmente aleatorios, centrados en cero, de las captaciones del sensor.
Debajo MATLAB
, estoy usando save
sin opciones, butter
como filtro de paso alto y single
para enviar después del filtrado.
save
esencialmente aplique una compresión GZIP de nivel 3 sobre un formato binario HDF5, por lo tanto, podríamos suponer que el tamaño del archivo es un buen estimador del contenido de la información , es decir, el máximo para una señal aleatoria y cerca de cero para una señal constante.
Guardar la señal original crea un archivo de 2 MB ,
Guardar la señal filtrada crea un archivo de 5 MB (?!).
2. Pregunta
¿Cómo es posible que la señal filtrada tenga un tamaño mayor , considerando que la señal filtrada tiene menos información, eliminada por el filtro?
3. Ejemplo simple
Un simple ejemplo:
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 archivos de 6 MB , tanto para la señal original como para la filtrada, que es más grande que los valores anteriores debido al uso de datos aleatorios puros.
En cierto sentido, indica que la señal filtrada es más aleatoria que la señal filtrada (?!).
4. Ejemplo de evaluación
Considera lo siguiente:
- Un filtro creado a partir de una señal aleatoria partir del ruido gaussiano , y una señal constante igual a .
- No tenga en cuenta el tipo de datos, es decir, usemos solo
double
, - No tenga en cuenta los tamaños de datos, es decir, usemos un vector de datos de columna de 1 MB, , .
- Vamos a considerar el parámetro como el Índice de aleatoriedad para la prueba: , es decir, es totalmente aleatoria y totalmente constante.
- Considere un filtro de paso alto butterworth con .
El siguiente código:
%% 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 el siguiente cuadro como resultado:
Esta simulación reproduce la condición de la señal filtrada que siempre tiene un tamaño notoriamente mayor que la señal original, lo que contradice el hecho de que una señal filtrada tiene menos información, eliminada por el filtro.