1

2 つの heaviside 関数の matlab で畳み込みを解決したいのですが、問題は、matlab でこれを実行できず、次のようなエラーが表示されることです。

??? Undefined function or method 'conv2' for input arguments of type 'sym'.

これは私がやろうとしていることです:

syms x;
conv(heaviside(-1-x), heaviside(x+3))

xが持つことができる値でベクトルを作成し、ベクトルを使用して変換できると思いますが、範囲を事前に定義したくないので、シンボルを保持したいと思います。

助言がありますか?

4

1 に答える 1

3

定義から畳み込みを直接計算できます ( http://en.wikipedia.org/wiki/Convolution )。たとえば、積分を計算します。

syms x t  
symb_conv = int(heaviside(-1-(t-x)) * heaviside(x+3), x, -inf, inf)

編集:

本当に、これらの条件下では畳み込みは常に無限大になるようです。

元の関数のプロットは次のとおりです。

ezplot(heaviside(-1-x), [-10 10])
ezplot(heaviside(x+3), [-10 10])

ヘヴィサイド(-x-1) ヘヴィサイド(x+3)

畳み込みを受け取る関数の 1 つを反映する必要があります。2番目の関数にしましょう:

ここに画像の説明を入力

最初と最後のプロットを比較すると、これら 2 つの関数が x<-3 に対して無限の非ゼロ交差を持っていることがわかります。これは、t=0 の畳み込みが無限大になることを意味します。

最後のプロットを任意の方向にシフトしようとすると、x<(-3-t) の非ゼロ交差が無限になります。したがって、最終的な畳み込み関数は、任意の t に対して無限大になります。

于 2013-04-25T15:24:49.747 に答える