Señal filtrada vs paradoja de compresión de archivos


9

1. Situación original

Tengo una señal original como una columna de matriz de datos de ncanales de datos x:mxn (single), con m=120019el número de muestras y n=15el 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 savesin opciones, buttercomo filtro de paso alto y singlepara enviar después del filtrado.

saveesencialmente 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 .xrN(0,1)xc1
  • 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, , .n=125000m=1
  • Vamos a considerar el parámetro como el Índice de aleatoriedad para la prueba: , es decir, es totalmente aleatoria y totalmente constante.ax=αxr+(1α)xcα=1α=0
  • Considere un filtro de paso alto butterworth con .wn=0.5

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: ingrese la descripción de la imagen aquí

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.


66
Creo que su pregunta es más sobre el algoritmo de compresión que cualquier otra cosa. Guarde los dos archivos con la opción -nocompression y luego verifique los patrones de bits que está generando sin darse cuenta. Supongo que su señal aleatoria en realidad contiene repeticiones significativas que se comprimen bien, mientras que la versión filtrada no. Interesante, no obstante :)
zeFrenchy

1
Sin compresión, todas las señales tienen el mismo tamaño, 1 MB, ya que la longitud y los tipos de datos son todos iguales. Aunque lo comprobaré. Estoy asumiendo ciegamente las obras de compresión como la información, así que voy a poner un ejemplo de evaluación giro adicional para el control de esta "información" aspecto ...
Brethlosze

Respuestas:


5

+1 en un experimento muy interesante y perspicaz.

Algunos pensamientos:

  1. No es cierto que la señal filtrada tenga menos información. Depende de su señal de entrada, tipo de filtro y frecuencia de corte.
    Cuando pasa la señal ruidosa, elimina los componentes que cambian lentamente. Eso hace que su señal esté compuesta de 'números aleatorios que cambian con mayor frecuencia', por lo tanto, más aleatorios. Por supuesto, eso depende si su señal de entrada contiene altas frecuencias o no. Su entrada es ruido, por lo que contiene todas las frecuencias altas. Pero si su entrada es una señal más ordenada, perderá gran parte de su energía después de una cierta frecuencia de corte de HP, la salida se vuelve cercana a cero, menos aleatoria, de menor tamaño. Creo que si aumenta la frecuencia de corte de su filtro HP bastante alto, después de cierto punto, el tamaño del archivo disminuirá.
    Otro experimento sería pasar la señal a través de un filtro LP con una frecuencia de corte baja y ver la diferencia.

  2. Basado en la misma teoría en 1., estás transmitiendo tu señal, eliminando esencialmente la parte DC xcy dejándola con ruido xr.


2
Información-teóricamente, su 1. está al menos medio equivocado. La señal filtrada debe contener menos (o como máximo, la misma información) que la no filtrada.
Marcus Müller

2
@ MarcusMüller Definitivamente estoy de acuerdo con usted en esto (declaración obvia) pero tengo la siguiente preocupación: si hubiera intercambiado los roles de la respuesta al impulso del filtro y la señal aleatoria de entrada (es decir, la respuesta al impulso (determinista) se convierte en la entrada al filtro con una respuesta de impulso aleatoria ahora) ¿podríamos decir que la información en la salida es menor que la información en la entrada?
Fat32

1
@ Fat32 que es un ángulo interesante! Punto verdadero En este caso particular, argumentaría que si consideramos el LPF como la señal que contiene información, entonces encontraríamos que contiene muy poca información (siendo muy correlacionada, por diseño, y bastante corta).
Marcus Müller

1
@ Fat32 esta es una buena sugerencia. Si comprimo el FT de la señal, para un caso sin pérdidas, ¡aún debería tener el mismo tamaño! (sin tener en cuenta el hecho de que algunas partes del espectro podrían conducir a información menos valiosa y fácil de descartar). Si no, habríamos descubierto un mejor algoritmo de compresión, que sinceramente dudo :). Así que prepararé un segundo ejemplo de evaluación con este enfoque.
Brethlosze

1
@ MarcusMüller No se puede generalizar simplemente. Debes definir las cosas para que esa afirmación sea verdadera. Suponga que tiene un sistema que aleatoriza su entrada. Cuando la entrada es DC, lo hace aleatorio, por lo que su salida tiene más entropía. (No es difícil imaginar eso, solo un canal de comunicación que agrega ruido a la entrada haría esto). Para los sistemas LTI, sabemos cómo tratan el ruido , entonces ese es un tema diferente. La teoría de la información no basa sus resultados en si un sistema es LTI. Todavía no soy un experto para estar seguro, pero creo que eso no es cierto.
doubleE

3

Verificaría 2 cosas:

  1. Si el filtro aplicado es Low Pass Filter o un filtro diferente. Si es un filtro que amplifica el ruido, el resultado es razonable.
    Parece que lo usa butter()en una forma que genera filtro de paso alto. Dado que la señal de entrada está compuesta de ruido, el filtro de paso alto la amplifica y hace que el archivo sea menos compresible. Por ejemplo, pruebe [hb, ha] = butter(2, 0.5, 'low');dónde debería admitir una mejor compresión de datos (supresión de ruido). Si quieres ir aún más lejos, úsalo [hb, ha] = butter(2, 0.1, 'low');.
  2. Verifique que la salida del comando de filtro singletambién lo sea. Creo que dado que su filtro es doublela salida, por lo doubletanto, el tamaño de la señal se multiplica. En su código, reemplace xf = filter(hb, ha, x);con xf = single(filter(hb, ha, x));. ¿Cuáles son los resultados ahora?

1
@hyprfrcb, prueba lo mismo con butter(2, 0.5, 'low');. ¿Qué pasa entonces?
Royi

1
Entonces el problema está resuelto. Está utilizando un filtro de paso alto que amplifica el ruido, por lo tanto, tiene un archivo más grande ya que el ruido es menos compresible. Disfruta ...
Royi

1
Puede intentar [hb, ha] = butter(2, 0.1, 'low');ver que el tamaño del archivo se vuelve aún más pequeño.
Royi

1
High Pass aplicado al ruido generalmente deteriora la SNR en una señal. Esto es lo que hiciste arriba. El filtro de paso alto amplifica la energía del ruido, lo que significa que los datos son menos compresibles.
Royi

1
La señal aleatoria que es filtrada por un filtro LPF crea correlación entre sus muestras, por lo tanto, es compresible a un nivel superior. No funciona con HPF que opera en señal aleatoria.
Royi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.