首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Matlab中,我能用'not‘作为离散的diracδ函数吗?

在Matlab中,我能用'not‘作为离散的diracδ函数吗?
EN

Stack Overflow用户
提问于 2013-08-21 16:07:05
回答 3查看 2.1K关注 0票数 6

在Matlab中,我能用not作为离散的狄拉克三角函数吗?

离散的diracδ函数的定义是,对于参数0,它返回1,否则返回0。但这正是not函数在Matlab中所做的!

如果我使用not而不是编写我自己的狄拉克δ函数,你会发现有什么问题吗?我知道Matlab有一个dirac函数,但是这个函数是连续的--它返回的是0而不是1的无穷大。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-21 16:18:06

我认为这是可以的,但是请注意,not的输出是一个logical的数组:

示例:

代码语言:javascript
运行
复制
a = [0, 1, pi]
b = not(a)
c = double(b)
whos

输出:

代码语言:javascript
运行
复制
a =

   0.00000   1.00000   3.14159

b =

   1   0   0

c =

   1   0   0

Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  ===== 
        a           1x3                         24  double
        b           1x3                          3  logical
        c           1x3                         24  double

Total is 9 elements using 51 bytes

因此,如果输入是doubles,我将以这样的方式定义离散的Diracδ函数:

代码语言:javascript
运行
复制
ddirac = @(x) double(not(x));

代码语言:javascript
运行
复制
function y = ddelta(x)
y = double(not(x));
票数 7
EN

Stack Overflow用户

发布于 2013-08-21 16:17:23

为了清晰起见,我要定义

代码语言:javascript
运行
复制
diracdelta = @not;

为了在代码中清楚地表明,您打算使用dirac增量函数,而不是执行逻辑否定。当您在六个月后重新检查代码时,您会感谢我所提供的额外清晰。

票数 6
EN

Stack Overflow用户

发布于 2014-10-28 10:40:29

顺便说一句,如果你试图计算这个(或任何dirac函数)对于大量重要数字的数字,由于浮点数的(Im)精度,它将无法正确地计算。

代码语言:javascript
运行
复制
x = [-2e-6:0.5e-6:2e-6]
y = (x - 0.5e-6)
~y

然而,看起来是零的x元素将不是真零。

代码语言:javascript
运行
复制
y(6) =    1.0588e-22

因此,我提议一个函数,如果x真的非常接近于零,则返回1;比浮点数的精度更接近:

代码语言:javascript
运行
复制
 epsdirac = @(x) double(abs(x) < eps)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18362486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档