收藏本站

开盘机音响技术网

 找回密码
 注册加入
查看: 1312|回复: 2
收起左侧

Matlab傅立叶变换、余弦变换和小波变换

[复制链接]
发表于 2015-11-25 20:35:23 | 显示全部楼层 |阅读模式

赶快注册并登录访问我们网站,呈现更多精彩内容!

您需要 登录 才可以下载或查看,没有帐号?注册加入

x
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 维 DFT
A=fftn(X,SIZE)
其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。
函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致。
别可以实现一维、二维和 N 维 DFT
例子:图像的二维傅立叶频谱
1. 离散傅立叶变换的 Matlab实现% 读入原始图像
I=imread('lena.bmp');
imshow(I)
% 求离散傅立叶频谱
J=fftshift(fft2(I));
figure;别可以实现一维、二维和 N 维 DFT
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 维 DFT
B=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
2.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 维 DFT
dwt2 二维离散小波变换
wavedec2 二维信号的多层小波分解
idwt2 二维离散小波反变换 Matlab
waverec2 二维信号的多层小波重构
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 维 DFT
OPT='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 函数
功能:二维信号的多层小波分解1. 离散傅立叶变换的 Matlab实现
格式:[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 维 DFT
X=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 维 DFT
  besttree 计算最佳(优)树
*  biorfilt 双正交样条小波滤波器组
  biorwavf 双正交样条小波滤波器 Matlab
*  centfrq 求小波中心频率
  cgauwavf Complex Gaussian小波
  cmorwavf coiflets小波滤波器 1. 离散傅立叶变换的 Matlab实现
  cwt 一维连续小波变换
  dbaux Daubechies小波滤波器计算
  dbwavf Daubechies小波滤波器 dbwavf(W) W='dbN' N=1,2,3,...,50 别可以实现一维、二维和 N 维 DFT
  ddencmp 获取默认值阈值(软或硬)熵标准
  depo2ind 将深度-位置结点形式转化成索引结点形式
  detcoef 提取一维小波变换高频系数 Matlab
  detcoef2 提取二维小波分解高频系数
  disp 显示文本或矩阵
  drawtree 画小波包分解树(GUI) 别可以实现一维、二维和 N 维 DFT
  dtree 构造DTREE类
  dwt 单尺度一维离散小波变换
  dwt2 单尺度二维离散小波变换 别可以实现一维、二维和 N 维 DFT
  dwtmode 离散小波变换拓展模式
*  dyaddown 二元取样
*  dyadup 二元插值 1. 离散傅立叶变换的 Matlab实现
  entrupd 更新小波包的熵值
  fbspwavf B样条小波
  gauswavf Gaussian小波 Matlab
  get 获取对象属性值
  idwt 单尺度一维离散小波逆变换
  idwt2 单尺度二维离散小波逆变换
  ind2depo 将索引结点形式转化成深度—位置结点形式
*  intwave 积分小波数
  isnode 判断结点是否存在 Matlab
  istnode 判断结点是否是终结点并返回排列值
  iswt 一维逆SWT(Stationary Wavelet Transform)变换
  iswt2 二维逆SWT变换 Matlab
  leaves   Determine terminal nodes
  mexihat 墨西哥帽小波
  meyer Meyer小波 别可以实现一维、二维和 N 维 DFT
  meyeraux Meyer小波辅助函数
  morlet Morlet小波
  nodease 计算上溯结点
  nodedesc 计算下溯结点(子结点)
  nodejoin 重组结点
  nodepar 寻找父结点 别可以实现一维、二维和 N 维 DFT
  nodesplt 分割(分解)结点
  noleaves   Determine nonterminal nodes
  ntnode   Number of terminal nodes函数 fft、fft2 和 fftn 分
  ntree   Constructor for the class NTREE
*  orthfilt 正交小波滤波器组
  plot 绘制向量或矩阵的图形
*  qmf 镜像二次滤波器
  rbiowavf   Reverse biorthogonal spline wavelet filters
  read 读取二进制数据
  readtree 读取小波包分解树
*  scal2frq   Scale to frequency
  set   Matlab
  shanwavf   Shannon wavelets
  swt 一维SWT(Stationary Wavelet Transform)变换
  swt2 二维SWT变换
  symaux   Symlet wavelet filter computation.
  symwavf Symlets小波滤波器
  thselect 信号消噪的阈值选择
  thodes   References
  treedpth 求树的深度
  treeord 求树结构的叉数
  upcoef 一维小波分解系数的直接重构
  upcoef2 二维小波分解系数的直接重构
  upwlev 单尺度一维小波分解的重构
  upwlev2 单尺度二维小波分解的重构
  wavedec 单尺度一维小波分解
  wavedec2 多尺度二维小波分解 Matlab
  wavedemo 小波工具箱函数demo
* wavefun 小波函数和尺度函数
* wavefun2 二维小波函数和尺度函数 别可以实现一维、二维和 N 维 DFT
  wavemenu 小波工具箱函数menu图形界面调用函数
* wavemngr 小波管理函数
  waverec 多尺度一维小波重构 1. 离散傅立叶变换的 Matlab实现
  waverec2 多尺度二维小波重构
  wbmpen   Penalized threshold for wavelet 1-D or 2-D de-noising
  wcodemat 对矩阵进行量化编码 1. 离散傅立叶变换的 Matlab实现
  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 wavelets
  wentropy 计算小波包的熵
  wextend  Extend a vector or a matrix
* wfilters 小波滤波器
  wkeep 提取向量或矩阵中的一部分
* wmaxlev 计算小波分解的最大尺度 1. 离散傅立叶变换的 Matlab实现
  wnoise 产生含噪声的测试函数数据
  wnoisest 估计一维小波的系数的标准偏差
  wp2wtree 从小波包树中提取小波树  1. 离散傅立叶变换的 Matlab实现
  wpcoef 计算小波包系数
  wpcutree 剪切小波包分解树
  wpdec 一维小波包的分解
  wpdec2 二维小波包的分解
  wpdencmp 用小波包进行信号的消噪或压缩
  wpfun 小波包函数
wpjoin  重组小波包
  wprcoef 小波包分解系数的重构
  wprec 一维小波包分解的重构 1. 离散傅立叶变换的 Matlab实现
  wprec2 二维小波包分解的重构
  wpsplt 分割(分解)小波包
  wpthcoef 进行小波包分解系数的阈值处理
  wptree  显示小波包树结构
  wpviewcf   Plot the colored wavelet packet coefficients.
  wrcoef 对一维小波系数进行单支重构 别可以实现一维、二维和 N 维 DFT
  wrcoef2 对二维小波系数进行单支重构
  wrev 向量逆序
  write 向缓冲区内存写进数据
  wtbo   Constructor for the class WTBO
  wthcoef 一维信号的小波系数阈值处理
  wthcoef2 二维信号的小波系数阈值处理 1. 离散傅立叶变换的 Matlab实现
  wthresh 进行软阈值或硬阈值处理
  wthrmngr 阈值设置管理
  wtreemgr 管理树结构 Matlab
1. cwt函数
函数功能:实现一维连续小波变换的函数。
语法格式: COEFS=cwt(S, SCALES, 'wname')
COEFS=cwt(S, SCALES, 'wname', 'plot')
COEFS=cwt(S, SCALES, 'wname', 'PLOTMODE')
COEFS=cwt(S, SCALES, 'wname', 'PLOTMODE', XLIM)
使用说明:cwt为一维小波变换的函数。

格式 COEFS=cwt(S, SCALES, 'wname') 采用'wname'小波,在正、实尺度SCALES下计算向量一维小波系数。
格式 COEFS=cwt(S, SCALES, 'wname', 'plot') 除了计算小波系数外,还加以图形显示。
格式 COEFS=cwt(S, SCALES, 'wname', 'PLOTMODE') 计算并画出连续小波变换的系数,并使用PLOTMODE对图形着色。
格式 COEFS=cwt(S, SCALES, 'wname', 'plot') 相当于 格式 COEFS=cwt(S, SCALES, 'wname', 'PLOTMODE') 中的语法 COEFS=cwt(S, SCALES, 'wname', 'absglb')
格式 COEFS=cwt(S, SCALES, 'wname', 'PLOTMODE', XLIM) 能够计算并画出连续小波变换的系数。系数使用PLOTMODE和XLIM进行着色。其中:XLIM=[x1,x2],并且有如下关系:1<=x1<=x2<=length(S)。

MODE值 含义
'lvl' scale-by-scale着色模式
'glb' 考虑所有尺度的着色模式
'abslvl'或'lvlabs' 使用系数绝对值的scale-by-scale着色模式
'absglb'或'glbabs' 使用系数绝对值并考虑所有尺度的着色模式

例子:cwt函数的应用举例
t=linspace(-1:1:512);
s=1-abs(t);
c=cwt(s,1:32,'cgau4');
c=cwt(s,[64 32 16:-2:2]);
c=cwt(s,[3 18 12.9 7 1.5],'db2');
c=cwt(s,1:64,'sym4','abslvl',[100:400]);

2.pat2cwav函数
函数功能:由模式构造小波。
语法格式:[PSI,XVAL,NC] = pat2cwav(YPAT, METHOD, POLDEGREE, REGULARITY)
使用说明:该函数计算由XVAL和PSI给定并用于连续小波变换的小波函数,该小波向量YPAT定义的模式构造,方差为1。其中模式隐含的x值是xpat=linspace(0,1,length(YPAT))。
常数NC的选取应保证通过以下方式的最小二乘拟合,NC*PSI在区间[0,1]上近似于YPAT:
当METHD等于'polynomial'时,为POLDEGREE多项式;
当METHD等于'othconst'时,为正交函数空间的投影;
参数REGULARITY定义了在0点和1点的边界约束,可以是'continuous','differentiable'或'none'。
当METHOD为'polynomial'时:
当REGULARITY等于'continuous',则必须POLDEGREE>=3;
当REGULARITY等于'differentiable',则必须POLDEGREE>=5。

关注电子工程专辑请搜微信号:“eet-china”
发表于 2015-11-25 20:51:31 | 显示全部楼层
Matlab都出来了,灯板好厉害!
 楼主| 发表于 2015-11-26 10:03:29 | 显示全部楼层
yxmll 发表于 2015-11-25 20:51
Matlab都出来了,灯板好厉害!

MATLAB[1]  是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
您需要登录后才可以回帖 登录 | 注册加入

本版积分规则

手机版|开盘机音响技术网 ( 桂ICP备20003207号-1  公安部备 45010302002201 客服:18077773618

GMT+8, 2024-5-18 13:23 , Processed in 0.063138 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表