我正试图使用Haar小波来获得arcsin(x)的小波分解
当同时使用Matlab的dwt
或wavedec
函数时,我会得到奇怪的近似系数值。由于应用低通Haar小波滤波器等于执行半和和arcsin的最大值是pi / 2,我假设近似系数不能超过pi / 2,但是这段代码:
x = linspace(0,1,128);
y = asin(x);
[cA, cD] = dwt(y, 'haar'); %//cA for approximating coefficients
在cA
中返回的值超过pi / 2。那是为什么?
答案 0 :(得分:0)
我相信让你感到困惑的是,在计算1级近似系数时,Haar的滤波器只是平均两个相邻数字。由于缩放功能的能量保留功能,每对数字除以sqrt(2)而不是2.实际上,您可以通过键入以下命令来查看特定小波滤波器的作用(对于Haar滤波器)这种情况):
[F1,F2] = wfilters('haar','d')
F1 =
0.7071 0.7071
F2 =
-0.7071 0.7071
然后,您可以通过构建一个简单的循环来检查上述内容的有效性:
CA_compare = zeros(1,64);
for k = 1 : 64
CA_compare(k) = dot( y(2*k-1 : 2*k), F1 );
end
然后你会看到" CA_compare"包含与" cA"完全相同的值确实
希望这有帮助。