matlab计算空间卷积,如何在MATLAB和WolframAlpha中计算函数与自身的卷积?

我对Mathematica了解不多,所以我只能帮助你(部分)了解Matlab部分。

使用Matlab进行卷积转换函数意味着您可以用数字方式进行卷积。你对积分定义的意思是你想象征性地做它。为此,您需要Matlab Symbolic Toolbox。这本质上是Matlab的Maple插件。所以你想知道的是它在Maple中是如何工作的。

您可能会发现此链接有用(wikibooks),以便在Matlab中对MuPad进行介绍。

我尝试将你的盒子函数实现为Matlab中的函数

t = sym('t')

f = (t > -1) + (t < 1) - 1

但是当t是ob符号类型Function 'gt' is not implemented for MuPAD symbolic objects时,这不起作用。

您可以将f声明为分段函数,请参阅(matlab online help),但这在我的Matlab中不起作用。这些示例都是Maple语法,因此它们可以直接在Maple中使用。

为了避免这种情况,我使用了

t = sym('t')

s = sym('s')

f = @(t) heaviside(t + 1) - heaviside(t - 1)

不幸的是,这不成功

I = int(f(s)*f(t-s),s, 0, t)

给出

Warning: Explicit integral could not be found.

并未提供明确的结果。您仍然可以评估此​​表达式,例如

>> subs(I, t, 1.5)

ans =

1/2

但Matlab / MuPad未能根据t给你和明确表达。这并不是意料之外的,因为函数f是不连续的。对于符号计算来说,这并不容易。

现在我会去帮助计算机,幸运的是,你问的答案非常简单。您的示例中的卷积只是int_0^t BoxFunction(s) * BoxFunction(t - s) ds。整数BoxFunction(s) * BoxFunction(t - s)也是一个盒子函数,不是从[-1,1]开始的,而是一个较小的间隔(取决于t)。然后,您只需要在这个较小的时间间隔内集成函数f(x)=1。

首先需要手动完成其中的一些步骤,然后您可以尝试将它们重新输入Matlab。你甚至根本不需要计算机代数程序来得到答案。

也许Matematica或Maple实际上可以解决这个问题,请记住,Matlab附带的MuPad只是Maple的精简版本。也许以上可能仍然可以帮助你,它应该让你了解事情是如何协同工作的。尝试为f添加更好的功能,例如一个多项式,你应该让它工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值