関数を使用せずにMATLABで畳み込みを適用する方法

数式のクローズアップ

MATLABには、事前に作成された畳み込み関数が含まれています。

画像クレジット: |画像/コムストック/ゲッティイメージズ

畳み込みは、ある関数が別の関数にシフトされるときに、1つの関数の重なりに対して2つの関数をブレンドする数学演算です。 MATLABには事前に作成された畳み込み関数が含まれていますが、離散畳み込み積分を自分で計算することは可能です。 2つの関数fとgの離散たたみ込みは、f(j)* g(k-j)の0からjの範囲の合計として定義されます。

ステップ1

畳み込みたい2つの関数を含む2つのベクトルfとgを定義します。 fとgの長さは同じである必要はありません。 畳み込みの結果の長さkは、fとgの長さの合計より1つ短くなります。

今日のビデオ

m =長さ(f); n =長さ(g); k = m + n-1;

ステップ2

畳み込みが発生する範囲jを定義します。 jの値は、畳み込む2つの関数f(j)とg(k + 1-n)の添え字が有効な範囲です。 kに追加された1の値は、MATLABが0ではなく1でベクトルのインデックス付けを開始するという事実を説明するためのものです。

j = max(1、k + 1-n):min(k、m)

ステップ3

畳み込みの結果のためにスペースを事前に割り当てます。

my_result =ゼロ(k);

ステップ4

kの値を反復処理するforループを記述します。

result_index = 1:kの場合

ステップ5

jのすべての値の畳み込みを計算します。

my_result(k)= sum(f(j)。* g(k-j + 1));

ステップ6

「end」コマンドでforループを閉じます。