Remove ads
来自维基百科,自由的百科全书
哈尔小波变换(英语:Haar wavelet)是由数学家哈尔·阿尔弗雷德于1909年所提出的函数变换,是小波变换中最简单的一种变换,也是最早提出的小波变换。他是多贝西小波的于N=2的特例,可称之为D2或db1。
哈尔小波的母小波(mother wavelet)可表示为:
对应的尺度函数(scaling function)可表示为:
其滤波器(filter)被定义为
当时,滤波器系数非零,此时可以用哈尔小波的滤波器系数及其尺度函数,将母小波函数表示为:
在所有正交(orthonormal)小波变换中,哈尔小波变换是最简单的一种变换,但它并不适合用于较为平滑的函数,因为它只有一个消失矩(Vanishing Moment)。
参与变换的小波函数(wavelet function)也叫母小波(mother wavelet)。
小波母函数可以用尺度函数表示:
对小波的母函数可以进行伸缩和平移,例如、。
当尺度离散方式选取时,依据哈尔小波函数的定义,我们可以推出[1]:
(1)不同尺度的小波函数相互正交(即),例如:
(证明同上)
(2)同一尺度及不同尺度下,小波函数的整数位移之间相互正交(即),例如:
尺度函数(scaling function),以下为尺度函数的简易图示:
(1):
(2):
(3):
(1)简单(Simple)
(2)快速算法(Fast algorithm)
(3)正交(Orthogonal)→可逆(reversible)
(4)结构紧凑(Compact),实(real),奇(odd)
(5)具有一阶消失矩(Vanish moment)
哈尔小波具有如下的特性:
(1)任一函数都可以由以及它们的位移函数所组成
(2)任一函数都可以由常函数,以及它们的位移函数所组成
(3)正交性(Orthogonal)
(4)不同宽度的(不同m)的小波函数和尺度函数之间会有一个关系
(5)可以用m+1的 系数来计算m的系数
若
若
图示如下:
上图为哈尔小波变换的快速演算简易图示,此为多重解析结构(multiresolution analysis)。
哈尔变换最早是由哈尔在1910年的论文《论正交函数系理论》(德语:Zur Theorie der Orthogonalen Funktionensysteme)中所提出,是一种最简单又可以反应出时变频谱(time-variant spectrum)的表示方法。其观念与傅里叶变换相近。傅里叶变换的原理是利用正弦波与余弦波来对信号进行调变;而哈尔变换则是利用哈尔函数来对信号进行调变。哈尔函数也含有正弦函数系和余弦函数系所拥有的正交性,也就是说不同的哈尔函数是互相正交的,其内积为零。
以下面的哈尔变换矩阵为例,我们取第1行和第2行来做内积,得到的结果为零;取第二行和第三行来做内积,得到的结果也是零。依序下去,我们可以发现在哈尔变换矩阵任取两行来进行内积的运算,所得到的内积皆为零。
在此前提下,利用傅里叶变换的观念,假设所要分析的信号可以使用多个频率与位移不同的哈尔函数来组合而成。进行哈尔变换时,因为哈尔函数的正交性,便可求出信号在不同哈尔函数(不同频率)的情况下所占有的比例。
哈尔变换有以下几点特性:
对一矩阵做哈尔小波变换的公式为,其中为一的区块且为点的哈尔小波变换。而反哈尔小波变换为。以下为在2、4及8点时的值:
function [Hr]=haar_matrix(N, normalized)
% Input :
% N : size of matrix, N must be power of 2.
% Output:
% Hr : Haar matrix of size NxN
p=[0 0];
q=[0 1];
n=nextpow2(N);
for i=1:n-1
p=[p i*ones(1,2^i)];
t=1:(2^i);
q=[q t];
end
Hr=zeros(N,N);
Hr(1,:)=1;
for i=2:N
P=p(1,i); Q=q(1,i);
for j= (N*(Q-1)/(2^P)):(N*((Q-0.5)/(2^P))-1)
Hr(i,j+1)=2^(P/2);
end
for j= (N*((Q-0.5)/(2^P))):(N*(Q/(2^P))-1)
Hr(i,j+1)=-(2^(P/2));
end
end
if normalized
Hr=Hr*(1/sqrt(N));
end
end
def haarMatrix(n, normalized=False):
# Allow only size n of power 2
n = 2**np.ceil(np.log2(n))
if n > 2:
h = haarMatrix(n / 2)
else:
return np.array([[1, 1], [1, -1]])
# calculate upper haar part
h_n = np.kron(h, [1, 1])
# calculate lower haar part
if normalized:
h_i = np.sqrt(n/2)*np.kron(np.eye(len(h)), [1, -1])
else:
h_i = np.kron(np.eye(len(h)), [1, -1])
# combine parts
h = np.vstack((h_n, h_i))
return h
运行时间 | 为使NRMSE < 所需要的项数量 | |
---|---|---|
离散傅里叶变换 | 9.5秒 | 43 |
沃尔什变换 | 2.2秒 | 65 |
哈尔小波变换 | 0.3秒 | 128 |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.