过滤信号与文件压缩悖论

信息处理 matlab 过滤器 压缩
2022-01-02 08:25:41

一、原始情况

我有一个原始信号作为列数据矩阵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');

为原始信号和过滤信号创建6MB文件,由于使用纯随机数据,该文件比以前的值大。

从某种意义上说,表明滤波后的信号比滤波后的信号更随机(?!)。

4. 评估示例

考虑以下:

  • 由来自高斯噪声的随机信号和等于的恒定信号创建的滤波器。xrN(0,1)xc1
  • 忽略数据类型,即我们只使用double,
  • 忽略数据大小,即让我们使用 1MB 的一列数据向量,n=125000m=1
  • 让我们将参数视为测试的随机指数,这意味着是完全随机的,而是完全恒定的。ax=αxr+(1α)xcα=1α=0
  • 考虑一个的高通巴特沃斯滤波器。wn=0.5

以下代码:

%% 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;

结果如下图: 在此处输入图像描述

该模拟再现了滤波后信号的大小总是比原始信号大的情况,这与滤波后的信号信息较少、被滤波器去除的事实相矛盾。

2个回答

我会检查两件事:

  1. 如果应用的滤波器是低通滤波器或不同的滤波器。如果是放大噪声的滤波器,结果是合理的。
    您似乎butter()以生成高通滤波器的形式使用。由于输入信号由噪声组成,高通滤波器将其放大并导致文件的可压缩性降低。例如,尝试[hb, ha] = butter(2, 0.5, 'low');它应该支持更好的数据压缩(噪声抑制)。如果您想走得更远,请使用[hb, ha] = butter(2, 0.1, 'low');.
  2. 验证 filter 命令的输出是否single也是如此。我认为,由于您的滤波器是double输出,double因此信号的大小成倍增加。在您的代码中,替换xf = filter(hb, ha, x);xf = single(filter(hb, ha, x));. 现在结果如何?

+1 非常有趣和有见地的实验。

一些想法:

  1. 过滤后的信号信息较少是不正确的。这取决于您的输入信号、滤波器类型和截止频率。
    当您对噪声信号进行高通处理时,您正在移除缓慢变化的组件。这使您的信号由“更频繁变化的随机数”组成,因此更加随机。当然,这取决于您的输入信号是否包含高频。您的输入是噪声,因此包含每个高频。但是如果你的输入是一个更有序的信号,它会在一定的 HP 截止频率后失去大部分能量,输出接近于零,随机性降低,尺寸更小。我认为如果您将 HP 过滤器的截止频率提高得相当高,在某个点之后,文件大小会减小。
    另一项实验是将信号通过具有低截止频率的 LP 滤波器并查看差异。

  2. 基于 1. 中的相同理论,您正在对信号进行高通处理,基本上去除了 DC 部分xc,并留下噪声xr