文档

qmf

尺度变换与小波滤波

语法

Y = qmf(XP
Y = qmf(X
Y = qmf(X,0)

描述

Y = qmf(XP更改反向矢量滤波器系数的偶数索引元素的符号X如果P0.如果P1时,奇数索引元素的符号颠倒。改变P以π弧度改变所得到的小波滤波器的傅里叶变换的相位。

Y = qmf(X等于Y = qmf(X,0)

x是一个有限能量信号。两个过滤器F0而且F1正交镜滤波器(QMF)如果,为任何x

y 0 2 + y 1 2 x 2

在哪里y0是十进制的信号吗x过滤与F0所以y0定义为x0F0x),y0n) =x0(2n),同样地,y1定义为x1F1x),y1n) =x1(2n).这个性质保证了相关的双通道滤波器组方案的完美重建(见strange - nguyen p. 103)。

例如,如果F0是一个Daubechies缩放滤波器与范数等于1和F1qmfF0),则为传递函数F0z),F1z)F0而且F1满足条件(参见db10):

| F 0 z | 2 + | F 1 z | 2 2.

例子

全部折叠

属性关联的正交镜像筛选器db10小波。

属性关联的缩放筛选器db10小波。

sF = dbwavf(“db10”);

dbwavf将滤波器系数归一化,使范数等于.将系数归一化,使滤波器的范数等于1。

G =平方根(2)*sF;

得到小波滤波器系数qmf.绘制过滤器。

H = qmf(G);subplot(2,1,1) stem(G) title(“缩放(低通)滤波器G”网格)subplot(2,1,2) stem(H)标题(小波(高通)滤波器H网格)

设置DWT扩展模式为“周期化”。生成一个长度为64的随机信号。对信号进行单级小波分解G而且H

dwtmode (“每”
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!警告:更改DWT扩展模式!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!***************************************** ** DWT扩展模式:周期化  ** *****************************************
N = 64;rng“默认”Sig = randn(1,n);[a,d] = dwt(sig,G,H);

近似系数和细节系数的长度都是32。确认过滤器能保存能量。

[总和(sig。^ 2)和(a . ^ 2) +和(d ^ 2)]。
ans =1×292.6872 - 92.6872

计算的频率响应G而且H.对滤波器进行傅里叶变换。

N = 128;F = 0:1/n:1-1/n;Gdft = fft(G,n);Hdft = fft(H,n);

画出每个频率响应的幅值。

图绘制(F (1: n / 2 + 1), abs (Gdft (1: n / 2 + 1)),“r”)举行情节(F (1: n / 2 + 1), abs (Hdft (1: n / 2 + 1)),“b”网格)标题(的频率响应)包含(归一化频率的) ylabel (“级”)传说(低通滤波器的高通滤波器的“位置”“东”

的频率响应的幅值平方和G而且H在每个频率上都等于2。

sumMagnitudes = abs(Gdft).^2+abs(Hdft).^2;(最小(sumMagnitudes)最大(sumMagnitudes))
ans =1×22.0000 - 2.0000

确认过滤器是标准正交的。

df = [G;H];Id = df*df'
id =2×21.0000 0.0000 0.0000 1.0000

这个例子显示了设置相位参数的效果qmf函数。

得到与Daubechies小波相关的分解低通滤波器。

Lowfilt = wfilters(“db4”);

使用qmf函数得到小波的分解低通滤波器。然后,比较两个值的符号qmf相位参数取值为0或1。相反的符号表示相移为弧度,也就是DFT乘以

P0 = qmf(lowfilt,0)
p0 =1×80.2304 -0.7148 0.6309 0.0280 -0.1870 -0.0308 0.0329 0.0106⋯⋯
P1 = qmf(lowfilt,1)
p1 =1×8-0.2304 0.7148 -0.6309 -0.0280 0.1870 0.0308 -0.0329 -0.0106⋯⋯

计算震级并显示它们之间的差值。与相位不同,幅度不受符号反转的影响。

abs (p0) abs (p1)
ans =1×80 0 0 0 0 0 0

参考文献

斯特朗,g;T. Nguyen (1996),小波和滤波器组韦尔斯利-剑桥出版社。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

R2006a之前介绍

这个话题有用吗?