Matlab之小波滤波函数
- 格式:doc
- 大小:788.00 KB
- 文档页数:17
matlab t1小波滤波算法Matlab T1小波滤波算法是一种用于信号处理的有效工具。
它可以帮助我们去除噪音、平滑信号、提取特征等。
本文将从介绍小波滤波算法的基本概念开始,然后详细说明如何在Matlab中实现T1小波滤波算法。
小波变换是一种数学变换方法,可以将信号分解为不同尺度的子信号。
通过将信号分解为多个频率段,我们可以更好地理解信号的频谱特征。
利用小波变换的特性,我们可以将信号分解为低频和高频成分。
低频成分包含信号的主要特征,而高频成分包含信号的细节信息。
T1小波滤波算法是一种基于小波变换的滤波方法。
它利用了小波分解和重构的原理,从而实现对信号的滤波处理。
该算法主要包含以下几个步骤:1. 读取信号数据:首先,我们需要在Matlab中读取待处理的信号数据。
这可以通过使用Matlab的读取文件函数来实现。
读取的数据可以是一个矩阵,每一列表示一个时刻的采样。
2. 小波分解:接下来,在Matlab中进行小波分解。
这可以通过调用Matlab 中的小波变换函数来实现。
小波变换函数中的参数包括信号数据和小波基。
小波基决定了小波分解的性质,常用的小波基包括haar小波、db小波等。
3. 提取低频成分:在小波分解后,我们可以得到具有不同尺度的低频和高频子信号。
低频子信号包含了主要特征,而高频子信号包含了信号的细节信息。
在T1小波滤波算法中,我们选择保留低频成分,并将高频成分设为零。
4. 小波重构:接下来,在Matlab中进行小波重构。
这可以通过调用Matlab 中的小波重构函数来实现。
小波重构函数中的参数包括低频成分和高频成分。
在T1小波滤波算法中,我们将高频成分设为零,只保留低频成分。
5. 过滤后的信号:最后,我们可以得到滤波后的信号。
通过比较滤波前后的信号,我们可以发现滤波算法的效果。
滤波后的信号能够减少噪音、平滑信号、提取特征等。
在使用Matlab T1小波滤波算法时,需要注意以下几个问题:1. 选择合适的小波基:不同的小波基具有不同的频谱特性。
谐波小波滤波的matlab程序谐波小波滤波(Harmonic Wavelet Filter)是一种信号处理方法,用于去除信号中的噪声和干扰。
在Matlab中,可以使用信号处理工具箱中的函数来实现谐波小波滤波。
以下是一个简单的示例程序,演示了如何在Matlab中使用谐波小波滤波。
matlab.% 生成示例信号。
t = 0:0.001:1; % 时间向量。
f1 = 50; % 信号的基本频率。
f2 = 120; % 信号的谐波频率。
x = sin(2pif1t) + 0.5sin(2pif2t); % 含噪信号。
% 添加高斯白噪声。
noise = 0.5randn(size(t)); % 生成高斯白噪声。
x_noisy = x + noise; % 含噪信号。
% 进行小波变换。
wname = 'db4'; % 选取小波基函数。
level = 5; % 分解层数。
[c, l] = wavedec(x_noisy, level, wname); % 进行小波分解。
% 构建谐波小波滤波器。
d = fdesign.bandstop('N,F3dB1,F3dB2', 6, 45, 75, 125); % 设计带阻滤波器。
Hd = design(d, 'butter'); % 设计巴特沃斯滤波器。
% 进行滤波。
c_denoised = wden(c, 'rigrsure', 's', 'sln', level,Hd); % 使用谐波小波滤波器对小波系数进行去噪。
% 重构信号。
x_denoised = waverec(c_denoised, l, wname); % 重构信号。
% 绘制结果。
subplot(3,1,1);plot(t, x, 'b');title('原始信号');subplot(3,1,2);plot(t, x_noisy, 'r');title('含噪信号');subplot(3,1,3);plot(t, x_denoised, 'g');title('去噪后信号');以上是一个简单的谐波小波滤波的Matlab程序示例。
Matlab小波函数一、Matlab小波去噪基本原理1、带噪声的信号一般是由含有噪声的高频信号和原始信号所在的低频信号。
利用多层小波,将高频噪声信号从混合信号中分解出来。
2、选择合适的阈值对图像的高频信号进行量化处理3、重构小波图像:依据图像小波分解的低频信号与处理之后的高频信号来重构图像的信息。
二、第二代小波变换1、构造方法特点:(1)继承了第一代小波的多分辨率的特性。
(2)不依赖fourior变换,直接在时域完成小波变换。
(3)变换之后的系数可以是整数。
(4)图像恢复质量与变换是边界采用何种延拓方式无关。
2、优点:算法简单,速度快,适合并行处理。
对存需求量小,便于DSP芯片实现、可用于本位操作运算。
3、提升原理:构造紧支集双正交小波(1)步骤:分裂—预测—更新(2)分解与重构三、matlab小波函数库1、matlab小波通用函数:(1)wavemngr函数【小波管理器(用于小波管理,添加、删除、储存、读取小波)】wavemngr(‘add’,FN,FSN,WT,NUMS,FILE)wavemngr(‘add’,FN,FSN,WT,NUMS,FILE,B)% 添加小波函数,FN为family name,FSN为family short name WT为小波类型:WT=1表示正交小波,=2表示非正交小波,=3表示带尺度函数的小波,=4表示无尺度函数的小波,=5表示无尺度函数的复小波。
小波族只有一个小波,则NUMS=“,否则NUMS表示小波参数的字符串FILE表示文件名B=[lb ub]指定小波有效支撑的上下界wavemngr(‘del’,N) %删除小波wavemngr(‘restore’)/ wavemngr(‘restore’,IN2) %保存原始小波OUT1= wavemngr(‘read’) %返回小波族的名称OUT1= wavemngr(‘read’,IN2) %返回所有小波的名称OUT1= wavemngr(‘read_asc’)%读取wavelets.asc文件并返回小波信息(2)scal2frq函数【尺度转换频率】F=scal2frq(A,’wname’,DELTA)%返回由尺度A,小波函数“wname”和采样周期DELTA决定的准频率。
MATLAB小波函数总结函数含义*:小波通用函数Allnodes 计算树结点appcoef 提取一维小波变换低频系数appcoef2 提取二维小波分解低频系数bestlevt 计算完整最佳小波包树besttree 计算最佳(优)树*biorfilt 双正交样条小波滤波器组biorwavf 双正交样条小波滤波器*centfrq 求小波中心频率cgauwavf Complex Gaussian小波cmorwavf coiflets小波滤波器cwt 一维连续小波变换dbaux Daubechies小波滤波器计算dbwavf Daubechies小波滤波器dbwavf(W) W='dbN' N=1,2,3,...,50 ddencmp 获取默认值阈值(软或硬)熵标准depo2ind 将深度-位置结点形式转化成索引结点形式detcoef 提取一维小波变换高频系数detcoef2 提取二维小波分解高频系数disp 显示文本或矩阵drawtree 画小波包分解树(GUI)dtree 构造DTREE类dwt 单尺度一维离散小波变换dwt2 单尺度二维离散小波变换dwtmode 离散小波变换拓展模式*dyaddown 二元取样*dyadup 二元插值entrupd 更新小波包的熵值fbspwavf B样条小波gauswavf Gaussian小波get 获取对象属性值idwt 单尺度一维离散小波逆变换idwt2 单尺度二维离散小波逆变换ind2depo 将索引结点形式转化成深度—位置结点形式*intwave 积分小波数isnode 判断结点是否存在istnode 判断结点是否是终结点并返回排列值iswt 一维逆SWT(Stationary Wavelet Transform)变换iswt2 二维逆SWT变换leaves Determine terminal nodesmexihat 墨西哥帽小波meyer Meyer小波meyeraux Meyer小波辅助函数morlet Morlet小波nodease 计算上溯结点nodedesc 计算下溯结点(子结点)nodejoin 重组结点nodepar 寻找父结点nodesplt 分割(分解)结点noleaves Determine nonterminal nodesntnode Number of terminal nodesntree Constructor for the class NTREE*orthfilt 正交小波滤波器组plot 绘制向量或矩阵的图形*qmf 镜像二次滤波器rbiowavf Reverse biorthogonal spline wavelet filtersread 读取二进制数据readtree 读取小波包分解树*scal2frq Scale to frequencysetshanwavf Shannon waveletsswt 一维SWT(Stationary Wavelet Transform)变换swt2 二维SWT变换symaux Symlet wavelet filter computation.symwavf Symlets小波滤波器thselect 信号消噪的阈值选择thodes Referencestreedpth 求树的深度treeord 求树结构的叉数upcoef 一维小波分解系数的直接重构upcoef2 二维小波分解系数的直接重构upwlev 单尺度一维小波分解的重构upwlev2 单尺度二维小波分解的重构wavedec 单尺度一维小波分解wavedec2 多尺度二维小波分解wavedemo 小波工具箱函数demo*wavefun 小波函数和尺度函数*wavefun2 二维小波函数和尺度函数wavemenu 小波工具箱函数menu图形界面调用函数*wavemngr 小波管理函数waverec 多尺度一维小波重构waverec2 多尺度二维小波重构wbmpen Penalized threshold for wavelet 1-D or 2-D de-noising wcodemat 对矩阵进行量化编码wdcbm Thresholds for wavelet 1-D using Birge-Massart strategy wdcbm2 Thresholds for wavelet 2-D using Birge-Massart strategy wden 用小波进行一维信号的消噪或压缩wdencmp De-noising or compression using waveletswentropy 计算小波包的熵wextend Extend a vector or a matrix*wfilters 小波滤波器wkeep 提取向量或矩阵中的一部分*wmaxlev 计算小波分解的最大尺度wnoise 产生含噪声的测试函数数据wnoisest 估计一维小波的系数的标准偏差wp2wtree 从小波包树中提取小波树wpcoef 计算小波包系数wpcutree 剪切小波包分解树wpdec 一维小波包的分解wpdec2 二维小波包的分解wpdencmp 用小波包进行信号的消噪或压缩wpfun 小波包函数wpjoin 重组小波包wprcoef 小波包分解系数的重构wprec 一维小波包分解的重构wprec2 二维小波包分解的重构wpsplt 分割(分解)小波包wpthcoef 进行小波包分解系数的阈值处理wptree 显示小波包树结构wpviewcf Plot the colored wavelet packet coefficients.wrcoef 对一维小波系数进行单支重构wrcoef2 对二维小波系数进行单支重构wrev 向量逆序write 向缓冲区内存写进数据wtbo Constructor for the class WTBOwthcoef 一维信号的小波系数阈值处理wthcoef2 二维信号的小波系数阈值处理wthresh 进行软阈值或硬阈值处理wthrmngr 阈值设置管理wtreemgr 管理树结构Wavefun用法:【phi,psi,xval】=wavefun(‘wname’,inter);————对应于正交小波其中:phi是尺度函数,psi是小波函数,xval是相应的点数【phi1,psi1,phi2,psi2,xval】=wavefun(‘wname’,inter);————对应于双正交小波其中:phi1是分解尺度函数,psi1是分解小波函数,phi2是重构尺度函数,psi2是重构小波函数,xval是相应的点数。
matlab小波滤波器代码-回复在MATLAB中实现小波滤波器的代码,可以通过以下步骤来完成:第一步:导入信号数据在MATLAB中,首先需要导入待处理的信号数据。
可以使用`wavread`函数读取声音文件,或者使用`load`函数导入其他格式的数据。
matlab[data, fs] = wavread('sound.wav');这里`data`是读取到的信号数据,`fs`是采样率。
第二步:选择小波基函数小波滤波器通过对信号进行小波变换来实现滤波效果。
在MATLAB 中,可以选择不同的小波基函数进行变换。
常用的小波基函数包括`haar`、`dbN`(N是小波基的阶数)、`coifN`、`symN`等。
这里以`haar`小波基为例。
matlabwaveletName = 'haar';第三步:进行小波变换使用`wavedec`函数进行小波变换,将信号分解为多个尺度的小波系数。
matlab[level1, level2, level3, level4] = wavedec(data, 4, waveletName);这里将信号分解为4个尺度的小波系数,分别存储在`level1`、`level2`、`level3`和`level4`变量中。
第四步:滤波在小波变换后,可以对小波系数进行滤波操作。
可以通过设定一个阈值,将小波系数中小于该阈值的部分设为0,从而达到去噪的效果。
matlabthreshold = 0.5;level1(filteredLevel1 < threshold) = 0;level2(filteredLevel2 < threshold) = 0;level3(filteredLevel3 < threshold) = 0;level4(filteredLevel4 < threshold) = 0;这里使用了一个阈值为0.5的例子,小于该阈值的小波系数将被设为0。
小波阈值滤波matlab代码小波阈值滤波是一种常用的信号处理方法,用于去除信号中的噪声。
在Matlab中,可以使用Wavelet Toolbox来实现小波阈值滤波。
以下是一个简单的小波阈值滤波的Matlab代码示例:```matlab% 加载信号load('signal.mat'); % 假设信号保存在signal.mat文件中 % 设置小波基和阈值wavelet = 'db4'; % 选择小波基level = 5; % 小波变换的层数threshold = 0.1; % 阈值% 对信号进行小波变换[c, l] = wavedec(signal, level, wavelet);% 计算阈值sigma = median(abs(c)) / 0.6745; % 用中值绝对偏差估计信号的标准差threshold = sigma * sqrt(2 * log(length(signal))); % 使用经验公式计算阈值% 应用阈值c_hat = wthresh(c, 's', threshold); % 确保小于阈值的系数被置为0% 重构信号signal_hat = waverec(c_hat, l, wavelet);% 绘制原始信号和滤波后的信号figure;subplot(2,1,1);plot(signal);title('原始信号');subplot(2,1,2);plot(signal_hat);title('滤波后的信号');```该代码首先加载了一个信号,然后设置了小波基和阈值。
接下来,通过使用`wavedec`函数对信号进行小波变换,得到小波系数和长度。
然后,通过计算阈值,使用`wthresh`函数对小波系数进行阈值处理,将小于阈值的系数置为0。
最后,通过使用`waverec`函数对处理后的小波系数进行重构,得到滤波后的信号。
一、收集和总结MA TLAB中涉及到的小波函数1.cwt函数功能:实现一维连续小波变换的函数。
cwt函数语法格式:COEFS=cwt(S, SCALES, 'wname')COEFS=cwt(S, SCALES, 'wname', 'plot')COEFS=cwt(S, SCALES, 'wname', 'PLOTMODE') 2.dwt函数功能:单尺度一维离散小波变换函数语法格式:[cA,cD] = dwt(X,'wname')[cA,cD] = dwt(X,'wname','mode',MODE)[cA,cD] = dwt(X,Lo_D,Hi_D)3.meyer函数功能:Meyer小波函数语法格式:[PHI,PSI,T] = meyer(LB,UB,N)[PHI,T] = meyer(LB,UB,N,'phi')[PSI,T] = meyer(LB,UB,N,'psi')4.plot函数功能:绘制向量或矩阵的图形函数语法格式:plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)5.cgauwavf函数功能:Complex Gaussian小波函数语法格式:[PSI,X] = cgauwavf(LB,UB,N,P)6.iswt函数功能:一维逆SWT(Stationary Wavelet Transform)变换函数语法格式:X = iswt(SWC,'wname')X = iswt(SWA,SWD,'wname')X = iswt(SWC,Lo_R,Hi_R)7.mexihat函数功能:墨西哥帽小波函数语法格式:[PSI,X] = mexihat(LB,UB,N)8.morlet函数功能:Morlet小波函数语法格式:[PSI,X] = morlet(LB,UB,N)9.symwavf函数功能:Symlets小波滤波器函数语法格式:F = symwavf(W)10.upcoef函数功能:一维小波分解系数的直接重构函数语法格式:Y = upcoef(O,X,'wname',N)Y = upcoef(O,X,'wname',N,L)Y = upcoef(O,X,Lo_R,Hi_R,N)Y = upcoef(O,X,Lo_R,Hi_R,N,L)Y = upcoef(O,X,'wname')Y = upcoef(O,X,Lo_R,Hi_R) 11.upwlev函数功能:单尺度一维小波分解的重构函数语法格式:[NC,NL,cA] = upwlev(C,L,'wname')[NC,NL,cA] = upwlev(C,L,Lo_R,Hi_R) 12.wavedec函数功能:单尺度一维小波分解函数语法格式:[C,L] = wavedec(X,N,'wname')[C,L] = wavedec(X,N,Lo_D,Hi_D) 13.wavefun函数功能:小波函数和尺度函数函数语法格式:[PHI,PSI,XVAL] = wavefun('wname',ITER) 14.waverec函数功能:多尺度一维小波重构函数语法格式:X = waverec(C,L,'wname')X = waverec(C,L,Lo_R,Hi_R)15.wpcoef函数功能:计算小波包系数函数语法格式:X = wpcoef(T,N)X = wpcoef(T)16.wpdec函数功能:一维小波包的分解函数语法格式:T = wpdec(X,N,'wname',E,P)T = wpdec(X,N,'wname')17.wpfun函数功能:小波包函数[函数语法格式:WPWS,X] = wpfun('wname',NUM,PREC) [WPWS,X] = wpfun('wname',NUM) 18.wprcoef函数功能:小波包分解系数的重构函数语法格式:X = wprcoef(T,N)19.wprec函数功能:一维小波包分解的重构函数语法格式:X = wprec(T)20.wrcoef函数功能:对一维小波系数进行单支重构函数语法格式:X = wrcoef('type',C,L,'wname',N)X = wrcoef('type',C,L,Lo_R,Hi_R,N)X = wrcoef('type',C,L,'wname')X = wrcoef('type',C,L,Lo_R,Hi_R)。
matlab t1小波滤波算法-回复中括号内的内容即为主题,即"matlab t1小波滤波算法",下面将一步一步回答这个问题,并解释关于这个主题的相关内容。
首先,什么是小波滤波算法?小波滤波算法是一种基于小波分析的信号处理技术。
它通过将信号在时间和频率上进行分解,并对分解后的小波系数进行加权,从而实现对信号中的有用信息和噪声进行分离的目的。
小波滤波算法与传统的滤波算法相比,具有更好的时频局部性、多分辨率分析能力和适应性。
接下来,为了实现小波滤波算法,我们将使用Matlab。
Matlab是一种用于高效数据分析和可视化的工具,它提供了丰富的数学和信号处理函数。
下面是实现小波滤波算法的几个关键步骤:1. 信号预处理:首先,我们需要对原始信号进行预处理,以便于后续的分解和滤波处理。
预处理的目的是消除信号中的基线漂移和噪声等干扰成分。
常用的预处理方法包括均值滤波、中值滤波和高通滤波等。
在Matlab中,可以使用函数如'filter'和'detrend'等进行信号预处理。
2. 小波分解:在信号预处理后,我们需要将信号进行小波分解,获得不同频率分量的小波系数。
小波分解可以通过多种不同的小波基函数进行,常用的有Daubechies小波、Symlets小波和Haar小波等。
在Matlab中,可以使用函数如'dwt'和'wavedec'等进行小波分解。
3. 小波系数选择:小波分解后,信号将被表示为一系列小波系数。
为了实现滤波的目的,我们需要根据具体应用的要求选择适当的小波系数。
常见的选择方法包括阈值法和软硬阈值法等。
在Matlab中,可以使用函数如'denoise'和'wdencmp'等进行小波系数选择。
4. 小波重构:在选择了适当的小波系数后,我们需要对小波系数进行重构,从而得到滤波后的信号。
小波重构可以通过反向小波变换来实现。
matlab小波变换Matlab 1. 离散傅立叶变换的Matlab实现Matlab 函数fft、fft2 和fftn 分别可以实现一维、二维和N 维DFT 算法;而函数ifft、ifft2 和ifftn 则用来计算反DFT 。
这些函数的调用格式如下:A=fft(X,N,DIM)其中,X 表示输入图像;N 表示采样间隔点,如果X 小于该数值,那么Matlab 将会对X 进行零填充,否则将进行截取,使之长度为N ;DIM 表示要进行离散傅立叶变换。
A=fft2(X,MROWS,NCOLS)其中,MROWS 和NCOLS 指定对X 进行零填充后的X 大小。
别可以实现一维、二维和N 维DFTA=fftn(X,SIZE)其中,SIZE 是一个向量,它们每一个元素都将指定X 相应维进行零填充后的长度。
函数ifft、ifft2 和ifftn的调用格式于对应的离散傅立叶变换函数一致。
别可以实现一维、二维和N 维DFT例子:图像的二维傅立叶频谱1. 离散傅立叶变换的Matlab实现% 读入原始图像I=imread('lena.bmp');函数fft、fft2 和fftn 分imshow(I)% 求离散傅立叶频谱J=fftshift(fft2(I));figure;别可以实现一维、二维和N 维DFTimshow(log(abs(J)),[8,10])2. 离散余弦变换的Matlab 实现Matlab2.1. dct2 函数功能:二维DCT 变换Matlab格式:B=dct2(A)B=dct2(A,m,n)B=dct2(A,[m,n])函数fft、fft2 和fftn 分说明:B=dct2(A) 计算A 的DCT 变换B ,A 与B 的大小相同;B=dct2(A,m,n) 和B=dct2(A,[m,n]) 通过对A 补0 或剪裁,使B 的大小为m×n。
2.2. dict2 函数功能:DCT 反变换格式:B=idct2(A)B=idct2(A,m,n)别可以实现一维、二维和N 维DFTB=idct2(A,[m,n])说明:B=idct2(A) 计算A 的DCT 反变换B ,A 与B 的大小相同;B=idct2(A,m,n) 和B=idct2(A,[m,n]) 通过对A 补0 或剪裁,使B 的大小为m×n。
Matlab之小波滤波函数南京理工大学仪器科学与技术专业谭彩铭2010-3-201 wfilters函数[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('wname') computes four filters associated with the orthogonal or biorthogonal wavelet named in the string 'wname'.The four output filters areLo_D, the decomposition low-pass filterHi_D, the decomposition high-pass filterLo_R, the reconstruction low-pass filterHi_R, the reconstruction high-pass filter2 biorfilt函数The biorfilt command returns either four or eight filters associated with biorthogonal wavelets.3 orthfilt函数[Lo_D,Hi_D,Lo_R,Hi_R] = orthfilt(W) computes the four filters associated with the scaling filter W corresponding to a wavelet4 biorwaef函数[RF,DF] = biorwavf(W) returns two scaling filters associated with the biorthogonal wavelet specified by the string W.5 coifwavf函数F = coifwavf(W) returns the scaling filter associated with the Coiflet wavelet specified by the string W where W = 'coifN'. Possible values for N are 1, 2, 3, 4, or 56 dbaux函数W = dbaux(N,SUMW) is the order N Daubechies scaling filter such that sum(W) = SUMW. Possible values for N are 1, 2, 3, ...W = dbaux(N) is equivalent to W = dbaux(N,1)W = dbaux(N,0) is equivalent to W = dbaux(N,1)7 dbwavf函数F = dbwavf(W) returns the scaling filter associated with Daubechies wavelet specified by the string W where W = 'dbN'. Possible values for N are 1, 2, 3, ..., 45.8 mexihat函数[PSI,X] = mexihat(LB,UB,N) returns values of the Mexican hat wavelet on an N point regular grid, X, in the interval [LB,UB].Output arguments are the wavelet function PSI computed on the grid X.This wavelet has [-5 5] as effective support.This function is proportional to the second derivative function of the Gaussian probability density function.9 waveinfo函数waveinfo provides information on all wavelets within the toolbox.10 meyer函数11 meyeraux函数12 morlet函数13 symwavf函数F = symwavf(W) returns the scaling filter associated with the symlet wavelet specified by the string W where W = 'symN'. Possible values for N are 2, 3, ..., 45.14 一维离散小波变换相关联的函数所谓的单尺度指进行一层小波分解,我想其分解的过程应该是简单的一个高通,一个低通FIR 滤波算法,再分别按2下采样(每两个点舍去一个点)。
从一定程度上验证这个问题有一个比较简单的方法。
dwt 函数的输入参数可以是小波名称,也可以是滤波器组系数,两者分别尝试,观察结果是否相同。
程序如下。
图1图2可见分解的过程就是简单的类似FIR 滤波运算的过程(一个高通,一个低通),那么重构的过程是什么呢?我们看下图所示程序。
图3图4可见,小波重构的过程也是简单地类似FIR 滤波运算的过程。
那么,小波滤波的过程是什么呢? 还有个问题,matlab 小波分解与小波重构后的信号和原信号之间有误差,那么这个误差是如何产生的?15 完全重构滤波器组实际编写的小波滤波算法中,其过程实际上就是完全重构滤波器进行滤波的过程,参考杨志华 杨力华译《小波基础及应用教程》中关于滤波器组的介绍。
对于下图一个简单系统,其中H 是FIR 滤波器。
确有W(z)=H(z)V(z)吗?设v=[v(1) v(2) v(3) v(4) v(5)],H=[a(1) a(2) a(3) a(4)]。
则有1234()(1)(2)(3)(4)(5)V z v v zv zv zv z----=++++,123()(1)(2)(3)(4)H z a a za z a z ---=+++那么由W(z)=H(z)V(z)知,对应的W(z)为12345()()(1)(1)((1)(2)(2)(1))((1)(3)(2)(2)(3)(1))((1)(4)(2)(3)(3)(2)(4)(1))((1)(5)(2)(4)(3)(3)(4)(2))((2)(5)(3)(4)(4)(3))((3)(5)(4H z V z a v a v a v z a v a v a v za v a v a v a v z a v a v a v a v za v a v a v za v a -----=++++++++++++++++++67)(4))(4)(5)v z a v z--+这样,你应该清楚得出的w序列是什么了,matlab中的conv命令恰好对应上式中的运算。
常规理解是进来几个数,应该就出去几个数,这里输出序列w的数量多于输入序列v的数量。
当然实际中输入序列v的数量是很多的,一头一尾多出的几个数完全可以忽略。
下列程序验证了完全重构滤波器图5当输入数据很多时,舍去前3个数和后3个数,输出信号和原信号一模一样。
程序及输出结果如下面图所示。
图6图716 完全重构滤波器组的滤波效应对db2小波的4个滤波系数[Lo_D,Hi_D,Lo_R,Hi_R],观察图5,图6中的程序,实际使用的滤波系数应为[h0,h1,h2,h3] = wfilters('db2')命令得到的滤波系数的倒序所得。
下面我们来看看滤波系数h0和滤波系数h00之间的区别,其中 h0=[-0.1294 0.2241 0.8365 0.4830]; h00=[0.4830 0.8365 0.2241 -0.1294]; 二者从形式上看只是顺序反了。
输入下图所示程序,并观察结果。
图8图9对于这一点,理论证明很简单 即证明232301233210jwj wj wjwj wj wa a ea ea ea a ea ea e------+++=+++,两边经展开化简后易证明等式成立。
对FIR 滤波器,其滤波系数数量不论为多少,系数倒序后的幅频响应特性和倒序前的幅频响应特性是一样的。
研究完全重构滤波器组的滤波效应,我们似乎还是离不开一正弦波为基的经典滤波分析理论,因为小波分解过程依然是FIR 滤波。
(此句有误,看起来像是FIR 滤波,但是还有重构的过程,整个过程还是由若干不同尺度的尺度函数和小波函数的组合,所谓的低通滤波,即去掉高频的小波函数部分)17 wavedec 和wrcoef 函数 Wavedec 函数:wavedec performs a multilevel one-dimensional wavelet analysis using either a specific wavelet ('wname') or a specific wavelet decomposition filters (Lo_D and Hi_D, see wfilters).[C,L] = wavedec(X,N,'wname') returns the wavelet decomposition of the signal X at level N, using 'wname'. N must be a strictly positive integer (see wmaxlev for more information). The output decomposition structure contains the wavelet decomposition vector C and the bookkeeping vector L. The structure is organized as in this level-3 decomposition example:图10wrcoef函数:wrcoef reconstructs the coefficients of a one-dimensional signal, given a wavelet decomposition structure (C and L) and either a specified wavelet ('wname', see wfilters for more information) or specified reconstruction filters (Lo_R and Hi_R).这两个函数是构成一维小波滤波程序的主要部分,程序及输出结果如下。