Mathematica 中的空值和非空值测试

2024-02-20

在 Mathematica 中测试某个值是否为 Null 的最佳/最干净/建议的方法是什么?并且不为空?

例如:

 a = Null
 b = 0;
 f[n_] := If[n == Null, 1, 2]
 f[a]
 f[b]

结果是:

 1
 If[0 == Null, 1, 2]

我本来期望 f[b] 为 2。


正如丹尼尔所指出的(并在列昂尼德的书中解释)Null == 0不评估为True or False, 所以If语句(如书面形式)也不评估。Null是一个特殊的Symbol它不会在输出中显示,但在所有其他方面都像正常的日常符号一样。

In[1]:= Head[Null]
Out[1]= Symbol

对于一些未定义的符号x,你不想要x == 0回来False, since x稍后可能为零。这就是为什么Null == 0也不评价。

有两种可能的修复方法:

1)强制测试评估使用TrueQ or SameQ.
为了n == Null测试时,以下内容将等效,但在测试数值对象时它们不会。 (这是因为Equal使用数值等效性的近似测试。)

f[n_] := If[TrueQ[n == Null], 1, 2]   (* TrueQ *)
f[n_] := If[n === Null, 1, 2]         (* SameQ *)

使用上面的内容,条件语句可以按您的意愿工作:

In[3]:= {f[Null], f[0]}
Out[3]= {1, 2}

2)使用可选的第四个参数If如果测试仍未评估(即,如果既不是True nor False)

g[n_] := If[n == Null, 1, 2, 3]

Then

In[5]:= {g[Null], g[0]}
Out[5]= {1, 3}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mathematica 中的空值和非空值测试 的相关文章

  • Mathematica 表达式开头的非交换乘法和负系数

    在一些非常友善的 stackoverflow 贡献者的帮助下在这篇文章中 https stackoverflow com questions 5023863 redefine noncommutative multiplication in
  • 具有断轴和交错颜色条的直方图

    我有这些数据 a b c d e alpha 5 51 0 60 0 12 26 90 76284 53 beta 3 39 0 94 0 17 0 20 0 20 gamma 7 98 3 34 1 41 7 74 28394 93 de
  • 制作自定义输入表和简短输入表

    我经常希望看到数学的图形对象不在FullForm但更具可读性InputForm能够通过双击来选择代码的一部分 并轻松地将此代码复制到新的输入中Cell 但默认的InputForm不允许这样做 因为InputForm默认显示为String 不
  • 可以使用其他编程语言(python/C#)中的 Mathematica 吗?

    是否可以使用其他语言的 Mathematica 计算能力 我需要执行一些复杂的操作 顺便说一句 不一定是符号操作 如果能够直接从我的 python c 程序调用 Mathematica 的函数或运行 Mathematica 的代码 那就太好
  • 简化 Mathematica 中的正则表达式

    我最近发现克莱尼代数 http en wikipedia org wiki Kleene algebra用于操作和简化正则表达式 我想知道这是否已内置到 Mathematica 等任何计算软件程序中 如果有一个计算工具来进行大型表达式的并集
  • 将声音导出为 WAV 文件

    我从来没有在 Mma 中过多地使用声音 I have t Sound List Violin SoundNote 6 我怎样才能导出t作为 WAV 文件 当我尝试显而易见的事情时 Export c test wav t I get 在这个旧
  • Mathematica“AppendTo”函数问题

    我是 Mathematica 的新手 在向数据表添加列时遇到了重大故障 我在 Vista 中运行 Mathematica 7 我在RFD上花了很多时间才来这里问 我有一个包含三列五行的数据表 mydata 我正在尝试将两个包含五个元素的列表
  • 了解内核-前端通信——为什么我的前端冻结?

    EDIT 只需确认您是否可以重现此内容就会很有用 只需一台计算机即可尝试此操作 无需远程连接 Update似乎其他人无法在 Mac 或 Win7 上重现此问题 因此它要么是 WinXP 特定的 要么是我的机器特定的 此时我要放弃了 最好有一
  • 无法从 {2,3,4,5,6,7,8} 获得的最小整数 (Mathematica)

    我正在尝试使用 Mathematica 解决以下问题 从集合中无法获得的最小正整数是多少 2 3 4 5 6 7 8 通过算术运算 求幂和括号 集合中的每个数字必须仅使用一次 不允许一元运算 例如 如果不使用 0 则 1 无法转换为 1 例
  • 在mathematica中使用Input[]输入数据

    我怎样才能在这段代码中使输入命令对话框中的文本像这样 输入 1 元素 输入 2 元素 For k 1 k n k br Input Enter the i element AppendTo x br 确保您的变量匹配 您可以使用Row来构建
  • 有没有办法自动将Matlab 中的结果或数据导入到Mathematica 中?

    有没有办法将结果或数据 例如矩阵 从Matlab导入到Mathematica自动地 或者有什么方法可以先运行Matlab程序 然后运行Mathematica程序自动地 感谢您提供任何有用的答案 至少有三种方法可以解决这个问题 通过 Java
  • 将符号暴露给 $ContextPath

    有多种Internal 有用的上下文函数 例如InheritedBlock https stackoverflow com questions 4198961 what is in your mathematica tool bag 568
  • 为什么即使仅使用一种规则和一种表达式,Replace 和 ReplaceAll 也会给出不同的结果?

    也许有人可以向我解释为什么Replace给出了不同的答案ReplaceAll 即使我使用一条规则 并且我认为我有一种表达方式 根据文档 ReplaceAll looks at each part of expr tries all the
  • 如何捕获 TimeConstrained 产生的中断?

    数学有CheckAbort允许捕获和处理用户生成的和编程的函数Aborts 但它不允许捕获由以下函数生成的中断TimeConstrained and MemoryConstrained TimeConstrained CheckAbort
  • Mathematica 中的分类树实现

    我想使用以下方法实现简单的分类树 二元分类 数学 我怎样才能实现二叉树数学 有这样做的符号吗 我想说这取决于你想用数据结构做什么 您可以利用 Mathematica 表达式本身就是树的事实 如果只有叶节点相关 则使用嵌套列表 例如 1 2
  • 了解跟踪*

    再会 当试图理解数学使用标准的评估顺序Trace and TraceScan最近开发的命令及其漂亮的视觉表示thread https stackoverflow com questions 5459735 the clearest way
  • 使用 select 操作 mathematica 中的列表

    我已将一些数据导入 Mathematica 中 数据将类似于 0 2 2 3 4 3 5 4 8 4 我想丢弃 x 值小于给定值的所有元素 或者创建一个包含 x 值大于该值的数据的新列表 我假设Select应该做这项工作 但我不知道怎么做
  • 为什么使用牛顿法的 FindMaximum 会抱怨找不到足够的函数减少?

    首先 这看起来 来自 ContourPlot 是一个相当简单的最大化问题 为什么使用牛顿法的 FindMaximum 会出现问题 其次 如何摆脱警告 第三 如果我无法摆脱这些警告 我如何判断警告是否有意义 即最大化失败 例如 在下面的代码中
  • 如何导出 ContourPlot3D 曲面并在 Excel、Originlab 或其他类似软件中重新生成

    我尝试过这个 但失败了 fig3D ContourPlot3D x 2 y 3 z 2 0 x 2 2 y 2 2 z 2 2 PlotPoints gt 100 pts InputForm fig3D 1 1 1 ListSurfaceP
  • 自定义后缀表示法,应用/函数

    我想在 Mathematica 7 中设置以下自定义符号 这种表示法本身并不是特别有用 因此请不要建议现有的替代方案 或指出这只会节省一些击键次数 我想知道是否可以以及如何完成 目前 可以进入 f 2 2 3 f a b c Out b a

随机推荐

  • 带有预定义关键字参数的define_method

    我想定义一个采用关键字参数的方法 我希望它在未提供关键字参数时引发 并且我可以自己编写代码 但理想情况下我想让 Ruby 为我做这件事 另外我希望能够使用检查新定义的方法Method parameters 如果我使用速记 double sp
  • 覆盖rails update_all方法

    我需要覆盖轨道 活动记录 update all方法 以便它始终更新updated at场也是如此 我应该如何实现这一目标 将以下代码放入文件中 config initializers update all with touch rb cla
  • 将用户定义的库添加到 SVN

    我正在开发一个项目 我使用了许多外部库 jar 格式 我已将下载的所有外部 jar 添加到版本控制 subversion 的构建路径中 然而 最近我注意到许多库并不在 SVN 树中 我对此进行了一些研究 这些是我作为用户定义的库创建的库 并
  • 在函数中使用全局变量

    如何在函数内创建或使用全局变量 如何在一个函数中在其他函数中使用定义的全局变量 Failing to use the global keyword where appropriate often causes UnboundLocalErr
  • PostgreSQL 自定义异常?

    在 Firebird 中我们可以像这样声明自定义异常 CREATE EXCEPTION EXP CUSTOM 0 异常 自定义异常 这些存储在数据库级别 在存储过程中 我们可以像这样引发异常 异常 EXP CUSTOM 0 PostgreS
  • Cakephp - HABTM 记录不会在唯一设置为 true 时删除

    CakePHP 的默认值 unique 设置为 true 我对其进行编码也是为了确保这一点 所以我有以下数据库结构 项目 HABTM 操作 将 unique 设置为 true 情况如下 当我删除 1 条或多条记录时 如果至少 1 条记录保持
  • 有没有办法从 Java Play 2 框架中的数据库生成代码?

    有谁知道如何在 Play Framework 2 0 中轻松地从数据库生成代码 我知道他们有一个模块 但似乎这是 1 X 版本的 Anyone CRUD 模块仅适用于 Play 1 2 x 在 Play 2 0 中不可用 它可能会在 Pla
  • C++ 中的 exit 和 std::exit 有什么区别?

    有什么区别exit and std exit在 C 中 我已经研究过但我找不到任何东西 这两个代码有什么区别 1 if SDL Init SDL INIT EVERYTHING 0 std cout lt lt Error Can t in
  • 实例变量何时初始化并赋值?

    实例变量什么时候初始化 是在构造函数块完成之后还是之前 考虑这个例子 public abstract class Parent public Parent System out println Parent Constructor init
  • 如何在cmd中显示每个进程的CPU使用率

    我想要一个 cmd windows 命令来显示所有进程以及每个进程的 cpu 百分比 有一个命令可以给我这个结果吗 你能帮我吗 谢谢 Try pslist http technet microsoft com en us sysintern
  • 访问回收站

    我想检查回收站中的文件 就像它是一个普通目录一样 特别是获取那里的文件列表以及每个文件到达回收站的日期 这段代码可以帮助你 Access the recycle bin folder Dim SH As New Shell32 Shell
  • Python 3.6 中的 f 字符串调试简写

    下列适用于 Python 3 8 https stackoverflow com questions 59661904 what does equal do in f strings inside the expression curly
  • 尝试删除最后一个元素时,带有子项的 SwiftUI (2.0) 列表崩溃

    我有以下带有子项的 SwiftUI 列表的代码 改编自另一个 StackOverflow 答案 SwiftUI 2 0 带有子项的列表 如何使披露按钮的可点击区域覆盖整个列表项 https stackoverflow com questio
  • 校准图像以获得位于同一平面上的点的顶视图

    校准 我已经使用 Matlab 中的视觉工具箱校准了相机 我使用棋盘图像来做到这一点 校准后我得到了cameraParams 其中包含 Camera Extrinsics RotationMatrices 3x3x18 double Tra
  • Angular 5 材质小吃栏仅针对自定义错误处理无法正确显示,否则工作正常

    Angular 5 材质 材质小吃栏仅针对自定义错误处理无法正确显示 否则工作正常 我试图使用材料小吃栏显示我的后端错误 问题是第一次被触发时 它出现在错误的位置 不是应有的底部中间 而是在左侧 并且它永远留在那里而不会消失 根据我的配置
  • 单击时弹出窗口中出现错误微调器

    我的应用程序如果有一个按钮 一个弹出窗口 有两个旋转器 那么我就可以在那里弹出窗口 但是当我单击旋转器时出现错误 这里有我的下面的代码和调试 因为 logcat 我一切都正确 public void a adirRegistro View
  • 根据另外 2 个表的联接结果插入到一个表中

    我在 MySQL 中有 3 个表 def table spot table tag mapping spot table def table tag id tag ja 2010490043 鉄道 2010680003 american f
  • 从动态名称获取 PHP 枚举

    我正在尝试从动态名称创建 php 8 1 枚举 看来不可能 所以给定一个枚举 enum Foo case bar 当然还有以下作品 Foo bar虽然这不会 name bar Foo name 这会导致 访问未声明的静态属性 App Con
  • 使用批处理检查互联网连接

    因此 最近我的互联网连接确实不太令人满意 因此我正在尝试收集尽可能多的数据 以了解中断的时间和持续时间 我尝试了一些 连接监控 程序 但它们没有按照我想要的方式工作 所以我决定制作一个 我是一个十足的菜鸟 但通过过去一个小时的谷歌搜索 我想
  • Mathematica 中的空值和非空值测试

    在 Mathematica 中测试某个值是否为 Null 的最佳 最干净 建议的方法是什么 并且不为空 例如 a Null b 0 f n If n Null 1 2 f a f b 结果是 1 If 0 Null 1 2 我本来期望 f