1. Situação Original
Eu tenho um sinal original como uma coluna de dados de n
canais de matriz de dados x:mxn (single)
, com m=120019
o número de amostras e n=15
o número de canais.
Além disso, eu tenho o sinal filtrado como uma matriz de dados da coluna filtrada x:mxn (single)
.
Os dados originais são principalmente aleatórios, centralizados em zero, a partir dos captadores do sensor.
Abaixo MATLAB
, estou usando save
sem opções, butter
como filtro passa-alto e single
para transmissão após a filtragem.
save
essencialmente aplique uma compactação GZIP nível 3 em um formato binário HDF5; portanto, podemos assumir que o tamanho do arquivo é um bom estimador do conteúdo das informações , ou seja, máximo para um sinal aleatório e quase zero para um sinal constante.
Salvar o sinal original cria um arquivo de 2 MB ,
Salvar o sinal filtrado cria um arquivo de 5 MB (?!).
2. Pergunta
Como é possível que o sinal filtrado tenha um tamanho maior , considerando que o sinal filtrado possui menos informações, removidas pelo filtro?
3. Exemplo Simples
Um exemplo simples:
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');
cria arquivos de 6 MB , tanto para o sinal original quanto para o filtro filtrado, que é maior que os valores anteriores devido ao uso de dados aleatórios puros.
De certa forma, indicando que o sinal filtrado é mais aleatório que o sinal filtrado (?!).
4. Exemplo Avaliativo
Considere o seguinte:
- Um filtro criado a partir de um sinal aleatório do ruído gaussiano e um sinal constante igual a .
- Desconsidere o tipo de dados, ou seja, vamos usar apenas
double
, - Desconsidere os tamanhos dos dados, ou seja, vamos usar um vetor de dados de coluna de 1 MB, , .
- Vamos considerar a parâmetro como o Índice de aleatoriedade para testar: , significando é totalmente aleatória e totalmente constante.
- Considere um filtro butterworth com .
O código a seguir:
%% 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;
Com o seguinte gráfico como resultado:
Essa simulação reproduz a condição do sinal filtrado sempre com um tamanho notoriamente maior que o sinal original, o que contradiz o fato de um sinal filtrado ter menos informações, removido pelo filtro.