このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
convmtx
畳み込み行列
説明
例
畳み込みの効率的な計算
信号がベクトルの場合、一般に、畳み込みの計算に conv
を使用すると convmtx
を使用するより効率的です。マルチチャネル信号では、convmtx
の方が効率的な場合があります。
conv
と convmtx
の両方を使用して、2 つのランダムなベクトル a
と b
の畳み込みを計算します。信号のサンプルはそれぞれ 1000 個です。この 2 つの関数が費やした時間を比較します。計算を 30 回繰り返して平均化することで不規則な変動を排除します。
Nt = 30; Na = 1000; Nb = 1000; tcnv = 0; tmtx = 0; for kj = 1:Nt a = randn(Na,1); b = randn(Nb,1); tic n = conv(a,b); tcnv = tcnv+toc; tic c = convmtx(b,Na); d = c*a; tmtx = tmtx+toc; end t1col = [tcnv tmtx]/Nt
t1col = 1×2
0.0004 0.0076
t1rat = tcnv\tmtx
t1rat = 17.1330
conv
の方がほぼ 2 桁効率的です。
a
が 1000 チャネルのマルチチャネル信号である場合について、この実行を繰り返します。事前割り当てを行い、conv
のパフォーマンスを最適化します。
Nchan = 1000; tcnv = 0; tmtx = 0; n = zeros(Na+Nb-1,Nchan); for kj = 1:Nt a = randn(Na,Nchan); b = randn(Nb,1); tic for k = 1:Nchan n(:,k) = conv(a(:,k),b); end tcnv = tcnv+toc; tic c = convmtx(b,Na); d = c*a; tmtx = tmtx+toc; end tmcol = [tcnv tmtx]/Nt
tmcol = 1×2
0.1253 0.0606
tmrat = tcnv/tmtx
tmrat = 2.0694
convmtx
は conv
の約 3 倍効率的です。
入力引数
h
— 入力ベクトル
ベクトル
入力ベクトル。行または列として指定します。
データ型: single
| double
n
— 畳み込みを行うベクトルの長さ
正の整数
畳み込みを行うベクトルの長さ。正の整数として指定します。
h
が長さm
の列ベクトルの場合、A
は(m+n-1)
行n
列の行列であり、A
と長さn
の列ベクトルx
との積は、h
とx
の畳み込みになります。h
が長さm
の行ベクトルの場合、A
はn
行(m+n-1)
列の行列であり、A
と長さn
の行ベクトルx
との積は、h
とx
の畳み込みになります。
出力引数
A
— 畳み込み行列
行列
入力 h
の畳み込み行列とベクトル x
。行列として返されます。
アルゴリズム
convmtx
では、関数toeplitz
を使用して畳み込み行列を生成します。convmtx
では、ゼロ パディングによってエッジの部分が処理されます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)