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');imshow(I)%求离散傅立叶频谱J=fftshift(fft2(I));figure;imshow(log(abs(J)),[8,10])2.离散余弦变换的Matlab实现2.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。Matlab2.3.dctmtx函数功能:计算DCT变换矩阵格式:D=dctmtx(n)说明:D=dctmtx(n)返回一个n×n的DCT变换矩阵,输出矩阵D为double类型。3.图像小波变换的Matlab实现函数3.1一维小波变换的Matlab实现(1)dwt函数Matlab功能:一维离散小波变换格式:[cA,cD]=dwt(X,'wname')[cA,cD]=dwt(X,Lo_D,Hi_D)别可以实现一维、二维和N维DFT说明:[cA,cD]=dwt(X,'wname')使用指定的小波基函数'wname'对信号X进行分解,cA、cD分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D)使用指定的滤波器组Lo_D、Hi_D对信号进行分解。(2)idwt函数功能:一维离散小波反变换格式:X=idwt(cA,cD,'wname')X=idwt(cA,cD,Lo_R,Hi_R)X=idwt(cA,cD,'wname',L)函数X=idwt(cA,cD,Lo_R,Hi_R,L)说明:X=idwt(cA,cD,'wname')由近似分量cA和细节分量cD经小波反变换重构原始信号X。'wname'为所选的小波函数X=idwt(cA,cD,Lo_R,Hi_R)用指定的重构滤波器Lo_R和Hi_R经小波反变换重构原始信号X。X=idwt(cA,cD,'wname',L)和X=idwt(cA,cD,Lo_R,Hi_R,L)指定返回信号X中心附近的L个点。1.离散傅立叶变换的Matlab实现3.2二维小波变换的Matlab实现二维小波变换的函数别可以实现一维、二维和N维DFTdwt2二维离散小波变换wavedec2二维信号的多层小波分解idwt2二维离散小波反变换Matlabwaverec2二维信号的多层小波重构wrcoef2由多层小波分解重构某一层的分解信号upcoef2由多层小波分解重构近似分量或细节分量1.离散傅立叶变换的Matlab实现detcoef2提取二维信号小波分解的细节分量appcoef2提取二维信号小波分解的近似分量upwlev2二维小波分解的单层重构1.离散傅立叶变换的Matlab实现dwtpet2二维周期小波变换idwtper2二维周期小波反变换(1)wcodemat函数功能:对数据矩阵进行伪彩色编码格式:Y=wcodemat(X,NB,OPT,ABSOL)Y=wcodemat(X,NB,OPT)Y=wcodemat(X,NB)Y=wcodemat(X)说明:Y=wcodemat(X,NB,OPT,ABSOL)返回数据矩阵X的编码矩阵Y;NB伪编码的最大值,即编码范围为0~NB,缺省值NB=16;OPT指定了编码的方式(缺省值为'mat'),即:别可以实现一维、二维和N维DFTOPT='row',按行编码OPT='col',按列编码OPT='mat',按整个矩阵编码ABSOL是函数的控制参数(缺省值为'1'),即:ABSOL=0时,返回编码矩阵ABSOL=1时,返回数据矩阵的绝对值ABS(X)1.离散傅立叶变换的Matlab实现(2)dwt2函数功能:二维离散小波变换格式:[cA,cH,cV,cD]=dwt2(X,'wname')[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数'wname'对二维信号X进行二维离散小波变幻;cA,cH,cV,cD分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)使用指定的分解低通和高通滤波器Lo_D和Hi_D分解信号X。1.离散傅立叶变换的Matlab实现(3)wavedec2函数功能:二维信号的多层小波分解格式:[C,S]=wavedec2(X,N,'wname')[C,S]=wavedec2(X,N,Lo_D,Hi_D)说明:[C,S]=wavedec2(X,N,'wname')使用小波基函数'wname'对二维信号X进行N层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D)使用指定的分解低通和高通滤波器Lo_D和Hi_D分解信号X。别可以实现一维、二维和N维DFT(4)idwt2函数功能:二维离散小波反变换格式:X=idwt2(cA,cH,cV,cD,'wname')X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)X=idwt2(cA,cH,cV,cD,'wname',S)别可以实现一维、二维和N维DFTX=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)说明:X=idwt2(cA,cH,cV,cD,'wname')由信号小波分解的近似信号cA和细节信号cH、cH、cV、cD经小波反变换重构原信号X;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)使用指定的重构低通和高通滤波器Lo_R和Hi_R重构原信号X;X=idwt2(cA,cH,cV,cD,'wname',S)和X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)返回中心附近的S个数据点。(5)waverec2函数说明:二维信号的多层小波重构格式:X=waverec2(C,S,'wname')X=waverec2(C,S,Lo_R,Hi_R)说明:X=waverec2(C,S,'wname')由多层二维小波分解的结果C、S重构原始信号X,'wname'为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R)使用重构低通和高通滤波器Lo_R和Hi_R重构原信号。Allnodes计算树结点appcoef提取一维小波变换低频系数appcoef2提取二维小波分解低频系数bestlevt计算完整最佳小波包树别可以实现一维、二维和N维DFTbesttree计算最佳(优)树*biorfilt双正交样条小波滤波器组biorwavf双正交样条小波滤波器Matlab*centfrq求小波中心频率cgauwavfComplexGaussian小波cmorwavfcoiflets小波滤波器cwt一维连续小波变换dbauxDaubechies小波滤波器计算dbwavfDaubechies小波滤波器dbwavf(W)W='dbN'N=1,2,3,...,50别可以实现一维、二维和N维DFTddencmp获取默认值阈值(软或硬)熵标准depo2ind将深度-位置结点形式转化成索引结点形式detcoef提取一维小波变换高频系数Matlabdetcoef2提取二维小波分解高频系数disp显示文本或矩阵drawtree画小波包分解树(GUI)别可以实现一维、二维和N维DFTdtree构造DTREE类dwt单尺度一维离散小波变换dwt2单尺度二维离散小波变换别可以实现一维、二维和N维DFTdwtmode离散小波变换拓展模式*dyaddown二元取样*dyadup二元插值1.离散傅立叶变换的Matlab实现entrupd更新小波包的熵值fbspwavfB样条小波gauswavfGaussian小波Matlabget获取对象属性值idwt单尺度一维离散小波逆变换idwt2单尺度二维离散小波逆变换ind2depo将索引结点形式转化成深度—位置结点形式*intwave积分小波数isnode判断结点是否存在Matlabistnode判断结点是否是终结点并返回排列值iswt一维逆SWT(StationaryWaveletTransform)变换iswt2二维逆SWT变换MatlableavesDetermineterminalnodesmexihat墨西哥帽小波meyerMeyer小波别可以实现一维、二维和N维DFTmeyerauxMeyer小波辅助函数morletMorlet小波nodease计算上溯结点nodedesc计算下溯结点(子结点)nodejoin重组结点nodepar寻找父结点别可以实现一维、二维和N维DFTnodesplt分割(分解)结点noleavesDeterminenonterminalnodesntnodeNumberofterminalnodes函数fft、fft2和fftn分ntreeConstructorfortheclassNTREE*orthfilt正交小波滤波器组plot绘制向量或矩阵的图形*qmf镜像二次滤波器rbiowavfReversebiorthogonalsplinewaveletfiltersread读取二进制数据readtree读取小波包分解树*scal2frqScaletofrequencysetMatlabshanwavfShannonwaveletsswt一维SWT(StationaryWaveletTransform)变换swt2二维SWT变换symauxSymletwaveletfiltercomputation.symwavfSymlets小波滤波器thselect信号消噪的阈值选择thodesReferencestreedpth求树的深度treeord求树结构的叉数upcoef一维小波分解系数的直接重构upcoef2二维小波分解系数的直接重构upwlev单尺度一维小波分解的重构upwlev2单尺度二维小波分解的重构wavedec单尺度一维小波分解wavedec2多尺度二维小波分解Matlabwavedemo小波工具箱函数demo*wavefun小波函数和尺度函数*wavefun2二维小波函数和尺度函数别可以实现一维、二维和N维DFTwavemenu小波工具箱函数menu图形界面调用函数*wavemngr小波管理函数waverec多尺度一维小波重构1.离散傅立叶变换的Matlab实现waverec2多尺度二维小波重构wbmpenPenalizedthresholdforwavelet1-Dor2-Dde-noisingwcodemat对矩阵进行量化编码