在matlab中求解符号和函数的卷积

时间:2013-04-25 15:00:00

标签: matlab convolution

我想用matlab解决两个重力函数的卷积问题, 问题是matlab不会让我这样做并弹出错误说:

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

这是我尝试做的事情:

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

我想我可以使用x可以拥有的值来制作矢量并使用矢量对其进行转换,但我不想预定义范围,所以我想保留它作为符号。

有什么建议吗?

1 个答案:

答案 0 :(得分: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])

heaviside(-x-1) heaviside(x+3)

我们需要反映一个接收卷积的函数。让它成为第二个功能:

enter image description here

如果我们比较第一个和最后一个图,我们可以看到这两个函数对于x <-3具有无限的非零交点。这意味着t = 0的卷积将是无穷大。

如果我们试图在任何方向上移动最后一个图,那么对于x <( - 3-t),我们也将具有无限的非零交点。因此,对于任何t,最终卷积函数都是无穷大。