主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

convmtx

説明

一个= convmtx (hnでは,畳み込み行列一个が返されます。一个n要素ベクトルxとの積はhxの畳み込みになります。

すべて折りたたむ

信号がベクトルの場合,一般に,畳み込みの計算にconvを使用するとconvmtxを使用するより効率的です。マルチチャネル信号では,convmtxの方が効率的な場合があります。

convconvmtxの両方を使用して2つのランダムなベクトル一个bの畳み込みを計算します。信号のサンプルはそれぞれ1000個です。この2つの関数が費やした時間を比較します。計算を30回繰り返して平均化することで不規則な変動を排除します。

元= 30;Na = 1000;Nb = 1000;tcnv = 0;tmtx = 0;kj = 1:Nt a = randn(Na,1);b = randn(注1);Tic n = conv(a,b);tcnv = tcnv + toc;tic c = convmtx(b,Na);d = c *;tmtx = tmtx + toc;结束t1col = [tcnv tmtx]/Nt
t1col =1×20.0007 - 0.0201
t1rat = tcnv \ tmtx
t1rat = 29.0764

convの方がほぼ2桁効率的です。

一个1000年がチャネルのマルチチャネル信号である場合について,この実行を繰り返します。事前割り当てを行い,convのパフォーマンスを最適化します。

Nchan = 1000;tcnv = 0;tmtx = 0;n = 0 (Na + Nb-1 Nchan);kj = 1:Nt a = randn(Na,Nchan);b = randn(注1);抽搐k = 1:Nchan n(:,k) = conv(a(:,k),b);结束tcnv = tcnv + toc;tic c = convmtx(b,Na);d = c *;tmtx = tmtx + toc;结束tmcol = [tcnv tmtx]/Nt
tmcol =1×20.2539 - 0.0893
tmrat = tcnv / tmtx
tmrat = 2.8431

convmtxconvの約3倍効率的です。

入力引数

すべて折りたたむ

入力ベクトル。行または列として指定します。

データ型:|

畳み込みを行うベクトルの長さ。正の整数として指定します。

  • hが長さの列ベクトルの場合,一个(m + n - 1)n列の行列であり,一个と長さnの列ベクトルxとの積は,hxの畳み込みになります。

  • hが長さの行ベクトルの場合,一个n(m + n - 1)列の行列であり,一个と長さnの行ベクトルxとの積は,hxの畳み込みになります。

出力引数

すべて折りたたむ

入力hの畳み込み行列とベクトルx。行列として返されます。

アルゴリズム

  • convmtxでは,関数托普利兹を使用して畳み込み行列を生成します。

  • convmtxでは,ゼロパディングによってエッジの部分が処理されます。

拡張機能

C / c++コード生成
MATLAB®编码器™を使用してCおよびc++コードを生成します。

R2006aより前に導入