我想用matlab解决两个重力函数的卷积问题, 问题是matlab不会让我这样做并弹出错误说:
??? Undefined function or method 'conv2' for input arguments of type 'sym'.
这是我尝试做的事情:
syms x;
conv(heaviside(-1-x), heaviside(x+3))
我想我可以使用x可以拥有的值来制作矢量并使用矢量对其进行转换,但我不想预定义范围,所以我想保留它作为符号。
有什么建议吗?
答案 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])
我们需要反映一个接收卷积的函数。让它成为第二个功能:
如果我们比较第一个和最后一个图,我们可以看到这两个函数对于x <-3具有无限的非零交点。这意味着t = 0的卷积将是无穷大。
如果我们试图在任何方向上移动最后一个图,那么对于x <( - 3-t),我们也将具有无限的非零交点。因此,对于任何t,最终卷积函数都是无穷大。