一、原始情况
我有一个原始信号作为列数据矩阵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. 评估示例
考虑以下:
- 由来自高斯噪声的随机信号和等于的恒定信号创建的滤波器。
- 忽略数据类型,即我们只使用
double
, - 忽略数据大小,即让我们使用 1MB 的一列数据向量,,。
- 让我们将参数视为测试的随机指数:,这意味着是完全随机的,而是完全恒定的。
- 考虑一个的高通巴特沃斯滤波器。
以下代码:
%% 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;
该模拟再现了滤波后信号的大小总是比原始信号大的情况,这与滤波后的信号信息较少、被滤波器去除的事实相矛盾。