連續小波變換的概念、操作、及時間尺度圖的顯示
最近很多網友問到關於連續小波變換的諸多問題,我用了點時間,寫了個底層程序,提供給大家參考。
1。連續小波的概念。就是把一個可以稱作小波的函數(從負無窮到正無窮積分為零)在某個尺度下與待處理信號卷積。改變小波函數的尺度,也就改變了濾波器的帶通范圍,相應每一尺度下的小波系數也就反映了對應通帶的信息。本質上,連續小波也就是一組可控制通帶范圍的多尺度濾波器。
2。連續小波是尺度可連續取值的小波,里面的a一般取整數,而不像二進小波a取2的整數冪。從連續小波到二進小波再到正交離散小波,其實就是a、b都連續,a不連續、b連續,a、b都不連續的過程。操作他們的快速算法也就是卷積(快速傅里葉),多孔(a trous),MALLAT。在MATLAB里,也就是CWT,SWT,DWT。SWT稱平穩小波變換、二進小波變換、或者非抽取小波變換。
3。從冗余性上:CWT>SWT>DWT,前面兩個都冗余,后面的離散小波變換不冗余。
4。從應用上:CWT適合相似性檢測、奇異性分析;SWT適合消噪,模極大值分析;DWT適合壓縮。
5。操作。就是在某個尺度上得到小波的離散值和原信號卷積,再改變尺度重新得到小波的離散值和原信號卷積。每一個尺度得到一個行向量存儲這個尺度下的小波系數,多個尺度就是一個矩陣,這個矩陣就是我們要顯示的時間-尺度圖。
6。顯示。“不要認為工程很簡單”。我的一個老師說過的話。小波系數的顯示還是有技巧的。很多人畫出的圖形“一片烏黑”就是個例子。第一步,一般將所有尺度下的小波系數取模;第二步,將每個尺度下的小波系數范圍作映射,映射到你指定MAP的范圍,比如如果是GRAY,你就映射到0-255;第三步,用IMAGE命令畫圖;第四步,設置時間和尺度坐標。MATLAB是個很專業的軟件,它把這些做的很好,但也就使我們懶惰和糊塗,我是個好奇心重的人就研究了下。里面有個巧妙的函數把我說的(1,2)兩個步驟封裝在了一起,就是WCODEMAT,有興趣的同學可以看看。
希望大家深入研究小波。
這里,還有要說的是,小波目前理論的熱點:
1。不可分的小波或者具有可分性質的方向性小波;
2。XLET: CONTOURLET, WEDGELET, SHEARLET, BANDELET, RIDGELET, CURVELET; PLATELET.
3。多分辨率分析+多尺度幾何分析的結合,才真正是我們所需要的。比如小波域的WEDGELET等等。
最后,幾點建議:
1。理論研究和實際應用不同,工程上很多問題小波並不是最好的,在做項目的時候大家要實際情況,實際對待。
2。做研究,有些話題太成熟了,對於小波本身幾乎很難再做下去,要在方向性和幾何性上下功夫。對此,我也做的工作很少,畢竟研究方向轉了。
3。看看DAUBECHIES,MALLAT,Minh N. Do的personal web,特別是preprint的文章,會有些啟發。
4。最終大家還是最好自己提一些新的XLET或算法出來,這樣才是有挑戰性的工作,否則我們永遠是落后的。
5。交叉領域和結合是值得做的,最近R2007也就增加了PCA+WAVELET等內容,還有用小波在數值分析領域求解偏微分等,多尺度現在是個很熱的東西,SIAM為此都開了專門的期刊,這是數值分析最前沿的期刊可以看看。還有ELSEVIER的Applied and Computational Harmonic Analysis,這些雖然數學多了一點,但畢竟才有可能在工程上是“新”的。
大家可以到我的網站下載到.m文件
http://cem.ahu.edu.cn/Freecode/freecode.htm
各位共勉!!!
安徽大學 沙威
2007年9月5日
% 編程人 沙威 安徽大學
% ws108@ahu.edu.cn
function CWT_EXE();
% 多個尺度連續小波變換的實現
clc;clear
% 下載信號
load vonkoch
vonkoch=vonkoch(1:510);
% 尺度1-32的連續小波變換
S_Min=1;S_Max=32;
index=0;
for scale=S_Max:-1:S_Min;
index=index+1;
cwt_coef(index,:)=CWT_FUNCTION(scale,32*(scale),vonkoch);
end
% 小波系數取模
cwtcoef_abs=abs(cwt_coef);
% 顯示
for index=S_Min:S_Max
max_coef=max(cwtcoef_abs(index,:)); % 系數模最大
min_coef=min(cwtcoef_abs(index,:)); % 系數模最小
ext=max_coef-min_coef; % 系數模跨度
cwtcoef_abs(index,:)=64*(cwtcoef_abs(index,:)-min_coef)/ext; % 系數大小變換
end
figure(1)
subplot(2,1,1);
plot(vonkoch);
xlabel('時間')
ylabel('幅度')
title('分形信號')
axis([1 510 0 0.02])
subplot(2,1,2)
colormap(pink(64));
image(cwtcoef_abs)
set(gca,'YTick',2:3:32)
set(gca,'YTickLabel',32:-3:2)
title('連續小波變換時間尺度圖')
xlabel('時間')
ylabel('尺度')
% 某個尺度的連續小波變換的M函數
% delta 小波變換的尺度
% N 小波函數的長度
% s 原始信號
% g 原始信號某個尺度下的小波變換系數
function g=CWT_FUNCTION(delta,N,s);
% 原始信號長度
n=length(s);
% 構造墨西哥帽子小波函數
for index_x=1:N;
x=index_x-(N+1)/2;
phi_x(index_x)=((pi^(-1/4))*(2/sqrt(3)))*(1-x.*x/(delta^2))*exp(-(x.*x)/(2*delta^2));
end;
phi_x=phi_x/norm(phi_x); % 能量歸一化
% 對信號做卷積
g=conv(s,phi_x); % 卷積
g=wkeep(g,n); % 保持信號長度
————————————————
版權聲明:本文為CSDN博主「懷想天空2015」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yyyljw/article/details/50373350