我可以在Matlab中使用'not'作为离散dirac delta函数吗?

时间:2013-08-21 16:07:06

标签: matlab

我可以在Matlab中使用not作为离散dirac delta函数吗?

离散狄拉克δ函数的定义是 对于参数0,它返回1,否则返回0。 但这正是not函数在Matlab中的作用!

如果我使用not而不是编写自己的问题,您是否看到任何问题? dirac delta函数?我知道Matlab有一个dirac 函数,但那个是连续版本 - 它返回无穷大 为0而不是1。

3 个答案:

答案 0 :(得分:7)

我认为没关系,但请注意not的输出是logical的数组:

示例:

a = [0, 1, pi]
b = not(a)
c = double(b)
whos

输出:

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

因此,如果输入为double s,我将以这种方式定义离散Dirac delta函数:

ddirac = @(x) double(not(x));

function y = ddelta(x)
y = double(not(x));

答案 1 :(得分:6)

为清楚起见,我会定义

diracdelta = @not;

在你的代码中明确表示你要使用dirac delta函数,而不是做出逻辑否定。当您在六个月后重新访问代码时,您会感谢我的额外清晰度。

答案 2 :(得分:0)

同样,如果您尝试对具有大量有效数字的数字评估此(或任何dirac函数),由于浮点数的(im)精度,它将无法正确评估。

x = [-2e-6:0.5e-6:2e-6]
y = (x - 0.5e-6)
~y

但是,看似零的x元素不会为零。

y(6) =    1.0588e-22

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

 epsdirac = @(x) double(abs(x) < eps)