用Matlab符号工具箱推导dirac-delta函数

用Matlab符号工具箱推导dirac-delta函数,matlab,Matlab,我是matlab新手。我不明白如何导出狄拉克δ函数,然后使用符号工具箱对其进行移位 syms t x = dirac(t) 例如,为什么我不能使用ezplot(x,[-10,10])来查看dirac delta函数?首先,我以前没有遇到过ezplot;我不得不仔细阅读。对于像你的x这样的函数,它很方便,但你仍然必须意识到它确实给了你它所承诺的东西:一个情节 如果你有绘制狄拉克三角函数的工作,你会如何正确地去做呢?你不能。您必须找到一种约定,即使用以下信息对绘图进行注释:绘图中有一个单独的、孤立

我是matlab新手。我不明白如何导出狄拉克δ函数,然后使用符号工具箱对其进行移位

syms t
x = dirac(t)

例如,为什么我不能使用
ezplot(x,[-10,10])
来查看dirac delta函数?

首先,我以前没有遇到过
ezplot
;我不得不仔细阅读。对于像你的
x
这样的函数,它很方便,但你仍然必须意识到它确实给了你它所承诺的东西:一个情节

如果你有绘制狄拉克三角函数的工作,你会如何正确地去做呢?你不能。您必须找到一种约定,即使用以下信息对绘图进行注释:绘图中有一个单独的、孤立的、无限的点

因此,除了平滑函数(这是一个定义良好的术语)之外,使用线图绘制其他对象是不合适的。Dirac Delta绝对不属于平滑函数类。您通常会使用一条垂直线或其他东西来表示函数不是0的点。

正如其他人所指出的,函数不是真正的函数,而是一个函数。dirac的帮助说明如下:

狄拉克(X)不是严格意义上的函数,而是一个
具有int(dirac(x-a)*f(x),-inf,inf)=f(a)和
diff(heaviside(x),x)=狄拉克(x)

严格地说,Matlab不可能以正常的方式绘制Dirac delta函数,因为它的一部分扩展到无穷大。但是,如果您想要可视化,有许多变通方法。一个简单的方法是使用plot函数和
操作符将一个
Inf
值转换为有限值。这将产生单位脉冲函数(或):

如果
t
x
已作为符号变量/表达式而不是数字变量/表达式存在,则可以使用
subs

syms t
x = dirac(t);
t2 = -10:10;
x2 = subs(x,t,t2)>0;
stem(t2, x2)

如果您想要看起来不同的东西,可以编写自己的绘图例程。使用
ezplot
不太可能起作用,因为它不能提供太多的控制。

因为狄拉克(t)不是一个函数。但是matlab在绘图时把它伪装成一个函数,如果你的样本没有精确地达到零,你会得到平坦的零,它可能不在函数类中:-)@LuisMendo:是的,它是一个分布,是基于函数的广义概念;但你向OP解释;)
syms t
x = dirac(t);
t2 = -10:10;
x2 = subs(x,t,t2)>0;
stem(t2, x2)