Main Content

convmtx2

2 次元畳み込み行列

説明

T = convmtx2(H,m,n) は行列 H の畳み込み行列 T を返します。Xmn 列の行列の場合、reshape(T*X(:),size(H)+[m n]-1)conv2(X,H) と同じになります。

T = convmtx2(H,[m n]) は畳み込み行列を返します。ここで、次元 mn は 2 要素ベクトルです。

すべて折りたたむ

行列 H の畳み込み行列 T に対して、Xmn 列の行列である場合、reshape(T*X(:),size(H)+[m n]-1)conv2(X,H) と同じであることを示します。

最初のコード ブロックの記述

H = ones(3,3)/9; % averaging filter 3-by-3
M = 5;
X = magic(M);
T = convmtx2(H,M,M);
Y1 = reshape(T*X(:), size(H)+[5 5]-1)
Y1 = 7×7

    1.8889    4.5556    4.6667    3.6667    2.6667    2.5556    1.6667
    4.4444    7.6667    8.5556    6.5556    6.7778    5.8889    3.4444
    4.8889    8.7778   11.1111   10.8889   12.8889   10.5556    5.8889
    4.1111    6.6667   11.0000   13.0000   15.0000   10.6667    4.5556
    2.7778    6.7778   13.1111   15.1111   14.8889    8.5556    3.7778
    2.3333    5.6667   10.5556   10.7778    8.7778    3.8889    1.3333
    1.2222    3.2222    6.0000    5.0000    4.0000    1.2222    1.0000

Y2 = conv2(X,H)
Y2 = 7×7

    1.8889    4.5556    4.6667    3.6667    2.6667    2.5556    1.6667
    4.4444    7.6667    8.5556    6.5556    6.7778    5.8889    3.4444
    4.8889    8.7778   11.1111   10.8889   12.8889   10.5556    5.8889
    4.1111    6.6667   11.0000   13.0000   15.0000   10.6667    4.5556
    2.7778    6.7778   13.1111   15.1111   14.8889    8.5556    3.7778
    2.3333    5.6667   10.5556   10.7778    8.7778    3.8889    1.3333
    1.2222    3.2222    6.0000    5.0000    4.0000    1.2222    1.0000

isequal(Y1,Y2) % They are the same.
ans = logical
   0

入力引数

すべて折りたたむ

入力行列。数値配列として指定します。

データ型: double

畳み込み行列の行。数値スカラーとして指定します。

データ型: double

畳み込み行列の列。数値スカラーとして指定します。

データ型: double

畳み込み行列の次元。形式 [m n] の 2 要素ベクトルとして指定します。ここで、m は行数であり、n は列数です。

データ型: double

出力引数

すべて折りたたむ

畳み込み行列。数値配列として返されます。出力行列 T のクラスは sparse です。T 内の非ゼロ要素の数は prod(size(H))*m*n 以下です。

バージョン履歴

R2006a より前に導入

参考

| (Signal Processing Toolbox)