1次元マルチレベル離散ウェーブレット変換

nAG Toolbox for MATLAB®用のサンプルコード

ホーム > 製品 > nAG Toolbox for MATLAB® > サンプルコード集 > 1次元マルチレベル離散ウェーブレット変換

Keyword: 1次元, マルチレベル, 離散, ウェーブレット変換

概要

本サンプルは1次元マルチレベル離散ウェーブレット変換を行うサンプルプログラムです。 本サンプルは以下に示される64個の要素をもつ配列についてDaubechiesウェーブレットを用いて1次元マルチレベル離散ウェーブレット変換を行い、多重分解のレベル数、各レベルの変換係数、ウェーブレット変換の係数とウェーブレットの再構成を出力します。

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 はウェーブレット再構成を示しています。

関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks