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

use*_*422 6 matlab

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

离散dirac delta函数的定义是,对于参数0,它返回1,否则它返回0.但这正是not函数在Matlab中的作用!

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

kol*_*kol 7

我认为没关系,但请注意输出not是一个logicals 数组:

例:

a = [0, 1, pi]
b = not(a)
c = double(b)
whos
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

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

ddirac = @(x) double(not(x));
Run Code Online (Sandbox Code Playgroud)

要么

function y = ddelta(x)
y = double(not(x));
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,您可以在Matlab中将`logical`表达式转换为`double`值,方法是在它前面放置一个"+"符号(通常,但并非总是自动完成,因此这可能是一个好习惯) . (5认同)
  • 或者只是'double(~x)`. (2认同)

Chr*_*lor 6

为清楚起见,我会定义

diracdelta = @not;
Run Code Online (Sandbox Code Playgroud)

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