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」或點擊本文標題下方「電子工程專輯」字樣,進入官方微信「關注」。