Matlab中小波分解近似系数的奇异值

Matlab中小波分解近似系数的奇异值,matlab,signal-processing,wavelet,haar-wavelet,Matlab,Signal Processing,Wavelet,Haar Wavelet,我正试图用Haar小波得到Arcin(x)的小波分解 当使用Matlab的dwt或wavedec函数时,我会得到近似系数的奇怪值。由于应用低通Haar小波滤波器等于执行半和,Arcin的最大值为pi/2,我假设近似系数不能超过pi/2,但此代码: x = linspace(0,1,128); y = asin(x); [cA, cD] = dwt(y, 'haar'); %//cA for approximating coefficients 在cA中返回大于pi/2的值。为什么会这样?我认为

我正试图用Haar小波得到Arcin(x)的小波分解 当使用Matlab的
dwt
wavedec
函数时,我会得到近似系数的奇怪值。由于应用低通Haar小波滤波器等于执行半和,Arcin的最大值为pi/2,我假设近似系数不能超过pi/2,但此代码:

x = linspace(0,1,128);
y = asin(x);
[cA, cD] = dwt(y, 'haar'); %//cA for approximating coefficients

cA
中返回大于pi/2的值。为什么会这样?

我认为,让你感到困惑的是,在计算一级近似系数时,哈尔滤波器只是将两个相邻的数字平均。由于标度函数的能量守恒特性,每对数字被sqrt(2)除,而不是2。事实上,您可以通过键入以下命令(对于本例中的Haar过滤器),查看特定小波过滤器的功能:

然后,您可以通过构造一个简单的循环来检查上述内容的有效性:

CA_compare = zeros(1,64);
for k = 1 : 64
CA_compare(k) = dot( y(2*k-1 : 2*k), F1 );
end
然后,您将看到“CA_compare”包含与“CA”完全相同的值

希望这有帮助

CA_compare = zeros(1,64);
for k = 1 : 64
CA_compare(k) = dot( y(2*k-1 : 2*k), F1 );
end