Keyword: 1次元, マルチレベル, 離散, ウェーブレット変換
概要
本サンプルは1次元マルチレベル離散ウェーブレット変換を行うサンプルプログラムです。 本サンプルは以下に示される64個の要素をもつ配列についてDaubechiesウェーブレットを用いて1次元マルチレベル離散ウェーブレット変換を行い、多重分解のレベル数、各レベルの変換係数、ウェーブレット変換の係数とウェーブレットの再構成を出力します。
※本サンプルはnAG Toolbox for MATLAB®が提供する関数 c09cc() のExampleコードです。実行にはMATLAB®本体(他社製品)とnAG Toolbox for MATLAB®が必要です。
本サンプル及び関数の詳細情報は c09cc のマニュアルページをご参照ください。
入力データ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
n = int32(64); wavnam = 'DB4'; mode = 'zero'; wtrans = 'Multilevel'; x = [ 6.5271; 6.512; 6.5016; 6.5237; 6.4625; 6.3496; 6.4025; 6.4035; 6.4407; 6.4746; 6.5095; 6.6551; 6.61; 6.5969; 6.6083; 6.652; 6.7113; 6.7227; 6.7196; 6.7649; 6.7794; 6.8037; 6.8308; 6.7712; 6.7067; 6.769; 6.7068; 6.7024; 6.6463; 6.6098; 6.59; 6.596; 6.5457; 6.547; 6.5797; 6.5895; 6.6275; 6.6795; 6.6598; 6.6925; 6.6873; 6.7223; 6.7205; 6.6843; 6.703; 6.647; 6.6008; 6.6061; 6.6097; 6.6485; 6.6394; 6.6571; 6.6357; 6.6224; 6.6073; 6.6075; 6.6379; 6.6294; 6.5906; 6.6258; 6.6369; 6.6515; 6.6826; 6.7042]; fprintf('\n Input Data:\n'); for i=1:8:n fprintf('%8.4f ', x(i:i+8-1)); fprintf('\n'); end fprintf('\n'); % Query wavelet filter dimensions [nwl, nf, nwc, icomm, ifail] = c09aa(wavnam, wtrans, mode, n); if ifail == int32(0) % Perform Discrete Wavelet transform [c, dwtlev, icomm, ifail] = c09cc(x, nwc, nwl, icomm); if ifail == int32(0) fprintf(' Length of wavelet filter : %10d\n', nf); fprintf(' Number of Levels : %10d\n\n', nwl); fprintf(' Number of coefficients in each level :\n '); fprintf(' %8d', dwtlev); fprintf('\n'); fprintf(' Total number of wavelet coefficients : %10d\n\n', nwc); fprintf(' Wavelet coefficients C : \n'); for i=1:8:nwc if i+8-1 <= numel(c) fprintf('%8.4f ', c(i:i+8-1)); else fprintf('%8.4f ', c(i:numel(c))); end fprintf('\n'); end fprintf('\n'); % Reconstruct original data [y, ifail] = c09cd(nwl, c, n, icomm); if ifail == int32(0) fprintf('\n Reconstruction Y : \n'); for i=1:8:n fprintf('%8.4f ', y(i:i+8-1)); fprintf('\n'); end fprintf('\n'); end end end
- n には入力データである配列の要素の数を指定しています。
- wavnam にはどのウェーブレット法を使用するかを示すパラメータを指定しています。"DB4"は4つの消失モーメントがある Daubechies ウェーブレットを使用することを意味します。
- mode にはデータの端部拡張(End Extension)の手法を示すパラメータを指定しています。"zero"はゼロパディング(ゼロ詰め)することを意味します。
- wtrans には離散ウェーブレット変換の種類を指定しています。"Multilevel" はマルチレベル離散ウェーブレット変換による多重分解を意味します。
- x に入力データである配列の要素を指定しています。
- 26行目に離散ウェーブレットフィルターの詳細を返す関数c09aaを呼び出しています。
- 30行目に本関数c09ccを呼び出す構文を指定しています。
- 33~48行目は離散ウェーブレット変換の結果を出力しています。
- 51行目にウェーブレット再構成を行う関数c09cdを呼び出しています。
- 53~60行目はウェーブレット再構成の結果を出力しています。
出力結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
Input Data: 6.5271 6.5120 6.5016 6.5237 6.4625 6.3496 6.4025 6.4035 6.4407 6.4746 6.5095 6.6551 6.6100 6.5969 6.6083 6.6520 6.7113 6.7227 6.7196 6.7649 6.7794 6.8037 6.8308 6.7712 6.7067 6.7690 6.7068 6.7024 6.6463 6.6098 6.5900 6.5960 6.5457 6.5470 6.5797 6.5895 6.6275 6.6795 6.6598 6.6925 6.6873 6.7223 6.7205 6.6843 6.7030 6.6470 6.6008 6.6061 6.6097 6.6485 6.6394 6.6571 6.6357 6.6224 6.6073 6.6075 6.6379 6.6294 6.5906 6.6258 6.6369 6.6515 6.6826 6.7042 Length of wavelet filter : 8 Number of Levels : 6 Number of coefficients in each level : 7 7 8 10 14 21 35 Total number of wavelet coefficients : 102 Wavelet coefficients C : 0.0000 -0.0227 -0.3446 2.7574 -10.1970 44.8800 15.9443 0.0010 -0.4881 -10.2673 11.3258 -1.7469 2.0785 -0.7334 -0.0054 -0.1402 -5.8980 -1.1527 5.5613 2.1352 0.3203 -0.4004 0.0010 0.5229 0.5055 -2.7274 -0.0911 -0.2806 -0.3669 2.9467 -0.3799 -0.1552 0.0218 0.0922 5.4626 -2.1620 0.5196 -0.0287 -0.0199 0.0920 -0.0134 -0.1298 -5.5168 2.3105 -0.5383 -0.0155 0.3057 0.6186 -1.5542 0.2682 0.1566 0.0030 -0.0152 -0.0589 0.0126 0.0063 0.0171 -0.0268 0.0077 -0.0189 0.0207 0.0104 -0.3207 -0.6062 1.6288 -0.2414 -0.0671 3.1657 -1.1462 0.2785 0.0523 -0.0030 -0.0270 -0.0442 0.0090 0.0171 -0.0230 -0.0015 0.0213 -0.0402 -0.0263 -0.0099 0.0021 -0.0250 0.0210 -0.0028 -0.0298 -0.0095 0.0034 0.0281 -0.0188 -0.0002 -0.0173 -0.0076 -0.0014 0.0184 -0.0318 0.0048 0.0047 -3.2555 1.1710 -0.2913 Reconstruction Y : 6.5271 6.5120 6.5016 6.5237 6.4625 6.3496 6.4025 6.4035 6.4407 6.4746 6.5095 6.6551 6.6100 6.5969 6.6083 6.6520 6.7113 6.7227 6.7196 6.7649 6.7794 6.8037 6.8308 6.7712 6.7067 6.7690 6.7068 6.7024 6.6463 6.6098 6.5900 6.5960 6.5457 6.5470 6.5797 6.5895 6.6275 6.6795 6.6598 6.6925 6.6873 6.7223 6.7205 6.6843 6.7030 6.6470 6.6008 6.6061 6.6097 6.6485 6.6394 6.6571 6.6357 6.6224 6.6073 6.6075 6.6379 6.6294 6.5906 6.6258 6.6369 6.6515 6.6826 6.7042
- Input Data は入力データである配列の要素を示しています。
- Length of wavelet filter はウェーブレットフィルターの長さを示しています。
- Number of Levels は実行される多重分解のレベルの最大数を示しています。
- Number of coefficients in each level は各レベルの変換係数の数を示しています。左から最終レベル(レベル6)の分解の近似係数の数、詳細係数の数、レベル5からレベル1までの詳細係数の数を示しています。
- Total number of wavelet coefficients は係数の総数を示しています。
- Wavelet coefficients はマルチレベルウェーブレット変換の係数を示しています。
- Reconstruction はウェーブレット再構成を示しています。