2015-11-14 209 views
2

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

syms t 
x = dirac(t) 

为什么我不能看到使用ezplot(x,[-10,10])例如狄拉克函数?

+0

,因为dirac(t)不是函数。但matlab假装它是一个函数,当绘图时,如果你的样本没有达到零,你会得到零平面 – percusse

回答

1

首先,我以前没有遇到过ezplot;我必须阅读它。对于像你的x这样的功能,这很方便,但你仍然必须意识到它正在给你它所承诺的东西:一个情节。

如果你有绘制狄拉克三角函数的工作,你会如何去做正确的?你不能。你必须找到一个注释你的情节的惯例,告诉你情节中有一个单独的,孤立的,无限的点。

用线图绘制东西因此不适用于除平滑函数(这是一个明确定义的术语)。 Dirac Delta绝对不是那种顺畅的功能类别。您通常会使用垂直线或某物来表示功能不为0的点。

+0

它甚至可能不属于这类函数:-) –

+1

@LuisMendo:是的,这是一个分布,它是是基于功能的广义概念;但你可以向OP解释;) –

3

正如其他人所指出的那样,Dirac delta function不是真正的功能,而是generalized function。为dirac帮助说明这一点:

狄拉克(X)是不是严格意义上的功能,而是一个
分布INT(狄拉克(XA)* F(X), - INF, inf)= f(a)和
diff(heaviside(x),x)= dirac(x)。

严格地说,Matlab不可能以正常方式绘制狄拉克三角函数,因为它的一部分延伸到无穷大。但是,如果您需要可视化,则有许多解决方法。一个简单的方法是使用stem绘图函数和>运算符将一个Inf值转换为有限值。这将产生一个单位冲激函数(或Kronecker delta):如果tx已经存在的符号变量/表达式,而不是数字的人,你可以使用

t = -10:10; 
x = dirac(t) > 0; 
stem(t,x) 

stem plot

subs

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

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