2010-04-14 79 views
1

我有一個4x4矩陣,我希望通過使用一級Daubechies-4小波分解成4個頻帶(LL,HL,LH,HH,其中L =低,H =高)轉變。作爲變換的結果,每個頻帶應該包含2×2個係數。我怎樣才能在MATLAB中做到這一點?我知道MATLAB有dbauxdbwavf函數。但是,我不確定如何使用它們,而且我也沒有小波工具箱。MATLAB中的Daubechies-4變換

任何幫助,非常感謝。

謝謝。

回答

0

你試過這個嗎?

N = length(S); 
S = transpose(S); 
s1 = S(1:2:N-1) + sqrt(3)*S(2:2:N); 
d1 = S(2:2:N) - sqrt(3)/4*s1 - (sqrt(3)-2)/4*[s1(N/2) s1(1:N/2-1)]; 
s2 = s1 - [d1(2:N/2) d1(1)]; 
s = (sqrt(3)-1)/sqrt(2) * s2; 
d = (sqrt(3)+1)/sqrt(2) * d1; 

禮貌http://en.wikipedia.org/wiki/Daubechies_wavelet#Implementation

+0

是 - 這是維基百科提供的代碼。我不確定id是什麼(即我不理解它) - 輸入和輸出是什麼。它似乎是在一個矢量上進行計算,而不是矩陣。 – Myx 2010-04-14 19:39:04

2

我覺得伊萬Selesnick的wavelet software package推動所有正確的按鈕,供您。它涵蓋了可分離的一維,二維和三維情況...... matlab實現和教程!它不需要小波工具箱,但它可能需要信號處理工具箱(不確定圖像處理工具箱)。它還爲更先進的小波變換提供代碼,因此您甚至可以探索其他技術。