为什么元胞数组中的尾随逗号是有效的 Matlab 语法?

2024-01-08

今天我很惊讶地发现

A = {1,2,3}

and

B = {1,2,3,}

都是 MATLAB 中的有效语法。我原以为第二个语句会产生错误。据我所知,它们产生相同的单元阵列(all([A{:}]==[B{:}])返回真)。

允许使用第二种语法有什么原因吗?这是解析器中的错误吗?是A and B真的一样吗?

有趣的是,下面是not允许:

C = {1,2,3,,,}

这些更多的是猜测,而不是答案。

人们可以检查符号参考 http://www.mathworks.com/help/matlab/matlab_prog/symbol-reference.html并发现comma ,可以用作

命令或语句分隔符

要在同一行输入多个 MATLAB 命令或语句, 用逗号分隔每个命令或语句:

for k = 1:10, sum(A(k)), end

在行

B = {1,2,3,}

因此之后的声明3预计,只有}, 意思是元胞数组末尾,有效的陈述。


The 分号;官方有3种用法:

数组行分隔符

当在方括号内使用来创建新数组或连接时 现有数组,分号在数组中创建一个新行:

A = [5, 8; 3, 4]

输出抑制

当分号放在命令末尾时,分号告诉 MATLAB 不要 显示该命令的任何输出。在此示例中,MATLAB 不 显示生成的 100×100 矩阵:

A = ones(100, 100);

命令或语句分隔符

与逗号运算符一样,您可以在上输入多个 MATLAB 命令 用分号分隔每个命令的一行。 MATLAB 抑制 这些命令的输出以分号结尾,并显示 以逗号结尾的命令的输出。

在此示例中,对变量 A 和 C 的赋值终止于 分号,因此不显示。因为对B的赋值是 以逗号结尾,显示此命令的输出:

A = 12.5; B = 42.7, C = 1.25;

所以在行中

x = {1,2,3,;5,6,7}

它遵循有效的陈述数组行分隔符 after 3,。之后预计会出现一个新的语句,在本例中是双精度语句5. Valid.


现在考虑这个案例

x = {1,2,3,;;;;4,5,6;;;}

如上之后3,遵循声明数组行分隔符,之后的语句是想必 the 空语句 - NOP https://en.wikipedia.org/wiki/NOP借用了一些底层程序核心编写的C,这基本上意味着:没做什么。所以之后3,;跟随三遍“没做什么”,在出现下一个语句之前。没有意义,正如 Matlab 告诉你的:额外的分号是不必要的。 - 但有效。

它还允许你做一些毫无意义的事情,比如:

if true
    ;
end

这是想必也是原因

C = {1,2,3,,,} 

返回错误,因为逗号,不是一个空语句,但在第一个逗号之后有一个预期的声明。


底线:它看起来很奇怪,但实际上对我来说似乎是逻辑的,因为 Matlab 在内部使用了大量的 C 代码,并且考虑到 null 语句,提到的所有内容都是有效的语法。


其他语言呢?

分号的用法就像x = [1,2,3,;;;;4,5,6;;;]在 Python 中无效,即使在预期的 Matlab 克隆中也是如此numpy,除非包含在这种不常见的语法中a = np.matrix('1,2,3;4,5,6').

a = np.matrix('1,2,3,;;;;4,5,6;;;')

也会抛出一个错误,因为;被解释为数组行分隔符无论如何,这都会让编译器抱怨行大小不一致。

然而,

x = [1,2,3,]

也是有效的语法Python and IronPython,正如它在VBScript and Lua如中提到的mlepage 的回答 https://stackoverflow.com/a/32853489/2605073。所有这些语言有什么共同点?它们(或多或少)都是在运行时解释的脚本语言。这不仅仅是Matlab。因此,OP 的兴奋仍然没有理由。

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

为什么元胞数组中的尾随逗号是有效的 Matlab 语法? 的相关文章

  • 如何发布数组多维角度js

    我在 angularjs 中有一个数组 示例如下 scope order qty 20 scope order adress Bekasi scope order city Bekasi 这个数组可以用这个代码发布 http method
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • PHP 数组到 JavaScript 数组

    假设我在 php 中有这个数组 cities array Caracas gt array air gt array 4 3 5 Working Days Saturday sea gt array 18 3 5 Days Wednesda
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际
  • 为什么java中LinkedList没有initialCapacity?

    我想知道为什么LinkedList没有initialCapacity 我知道什么时候使用ArrayList什么时候LinkedList 定义集合最终大小的好习惯是 List
  • 在 C 中将字符追加到字符数组

    我想将一个字符附加到代表字符串的字符数组中 我正在使用结构来表示字符串 struct String char c int length int maxLength String realloc弄乱了我的数组 当我打印字符串时 它会从内存中打
  • 什么是上下文无关语法和巴科斯诺尔范式?

    有人可以用通俗的语言解释一下吗 什么是上下文无关语法 什么是巴科斯诺尔范式 如何使用这个记号 如何进行字符串推导 如何描述语言语法 上下文无关语法 CFG G 是一个四元组 V R S 其中 V 一组非终结符号 一组端子 V R 一组规则
  • 在 Play2 和 Scala 中解析没有数据类型的 JSON

    people name Jack age 15 name Tony age 23 name Mike age 19 这是我试图解析的 json 示例 我希望能够对每个人进行 foreach 操作并打印他们的姓名和年龄 我知道当 json 数
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 读出 Matlab / Octave fft2() 函数输出的特定点

    我正在熟悉 Octave 及其功能fft2 在此玩具示例中 我的目标是生成以下 256 x 256 png 图像的 2D DFT 为了能够轻松理解输出 我尝试将此图像转换为 256 x 256 图像 消除颜色信息 Im imread cir
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Repa 数组上的并行 mapM

    在我最近的work https github com bgamari mixture model with Gibbs sampling 我一直在充分利用RVar http hackage haskell org packages arch
  • PHP CSV VLookup

    我正在寻找一个 PHP 函数 它可以读取 CSV 文件并在第 1 列上执行 vlookup 以回显第 2 列中同一行的相关值 例如 如果 CSV 包含 Name Email John j email protected cdn cgi l
  • scipy distance_transform_edt 函数如何工作?

    https docs scipy org doc scipy 0 14 0 reference generated scipy ndimage morphology distance transform edt html https doc
  • 数组到集合:优化代码

    有更好的方法来实现这一目标吗 public static List
  • Pandas apply 与 np.vectorize 从现有列创建新列的性能

    我正在使用 Pandas 数据框 并希望创建一个新列作为现有列的函数 我还没有看到关于之间速度差异的很好的讨论df apply and np vectorize 所以我想我会在这里问 熊猫apply 功能很慢 根据我的测量 在一些实验中如下
  • 如何在 Swift 中使用函数数组

    我已经阅读了我可以在这里找到的所有关于函数数组的帖子 太棒了 你能做到 我估计 但没有一篇文章实际上展示了如何使用它们 至少不是我想要做的 这就是我想要的 它们都可以采用相同的参数 但这不是必需的 这篇文章很接近 将允许我循环执行每个函数
  • 创建一个 int 类型的随机数组。爪哇

    我需要创建一个随机的 int 数组 并按我自己的类对其进行排序 这是我制作数组的地方 public class MyProgram9 public static void main String args int list new int
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl

随机推荐

  • Magento - 无法将产品添加到管理面板后端的手动订单中

    我遇到一个问题 当我在 Magento 1 4 1 1 的管理面板中创建订单时 我可以启动订单 选择客户 然后选择语言 它会加载所有信息 但是当我去时到 添加产品 我可以打开它并选择产品 但是当我单击 将所选产品添加到订单 时 它会短暂显示
  • 在尊重括号的同时用逗号分割列表中的字符串

    我有一个清单 例如 a john is great paul school robert jack john 然后我正在构建一个空列表来附加分割 b 然后我这样做 for i in a b append i split 但列表是这样出现的
  • 如何防止鼠标监听器暂时出现在窗口上?

    我正在用 Java 编写一个游戏 这是我试图做得 漂亮 的第一个游戏 这款游戏名为 Bantumi 这是一款棋盘游戏 现在我正在为动作编写动画 问题是 当运动动画运行时 板仍然会获取鼠标事件 如果用户选择新的运动 则正在运行的运动将被丢弃
  • FileProvider“无法找到配置的根”异常

    这些 FileProvider 又一个失去了灵魂 我已经在这个问题上工作了一天多了 看来我错过了一些大东西 任何帮助 将不胜感激 我正在尝试使用 FileProvider 发送带有附件的电子邮件 我的 AndroidManifest xml
  • 将会话中保存的数组中的多行插入表中?

    我使用一个插入命令通过 php 将存储在会话变量中的多个状态值传递到 MySQL 表中 我想知道是否可以将每个状态值插入到不同的行中 我还有一个 ID 保存在变量中 我想将其与每个状态一起插入 campaign id 每个状态都存储在该会话
  • 匹配 foo 或 bar vim 正则表达式

    有没有一种方法可以同时匹配多个单词vim搜索和替换 就像是 s foo bar g 寻找foo or bar并替换为任何内容 这会搜索模式foo bar 这不是我想要的 我可以搜索多个人物这边走 abcdef s ace g 结果是 bdf
  • 有没有办法在开发时只刷新 javascript include ?

    在 js 文件上进行开发时 我只想刷新该文件而不是整个页面以节省时间 有人知道这方面的技术吗 这是创建新脚本元素的函数 它附加一个递增的整数以使脚本的 URL 唯一 如 Kon 建议 以便强制下载 var index 0 function
  • Laravel 4 Auth::attempt() 总是返回 false

    我正在尝试 Laravel 的 Auth 类 但每次我尝试登录用户时 该方法都会返回 false 这是我的代码 路线 php Route get new user function return View make register Rou
  • 使用Fisher方法matlab组合P值?

    完成 CDF 后 我收到了以下值P 其中的样本 0 43 0 12 0 0021 0 05 0 017 0 001 0 025 0 038 0 35 0 29 我想结合我的P值的帮助下Fisher https en wikipedia or
  • 基于json输入绘制网络拓扑图

    我想通过证明 json 数据作为输入 使用 Highchart 或任何其他 js 库绘制网络拓扑图 在查看示例时http www highcharts com demo renderer http www highcharts com de
  • 设置滚动条拇指大小

    我正在尝试计算与 WPF 滚动条拇指元素大小相关的算法 拇指元素的大小可以使用Scrollbar ViewportSize属性 但又与Scrollbar Minimum and Scrollbar Maximum价值观 到目前为止我发现的是
  • android 从加速度计读数中删除重力

    我正在开发一个 Android 应用程序 我需要从加速度计读数中消除重力 我已经阅读了关于这个问题的多个讨论 我还找到了一个算法here http developer android com reference android hardwa
  • pandas 中给定日期的季度天数

    我创建了一个日期数据框 如下所示 import pandas as pd timespan 366 df pd DataFrame Date pd date range pd datetime today periods timespan
  • 在 Keras 中实现 Rprop 算法

    我正在尝试为 Keras 实现弹性反向传播优化器 link http www inf fu berlin de lehre WS06 Musterererkennung Paper rprop pdf 但具有挑战性的部分是能够根据每个单独的
  • 何时使用 SortedList 而不是 SortedDictionary

    这可能看起来与此重复question https stackoverflow com questions 935621 whats the difference between sortedlist and sorteddictionary
  • 为结构字段分配默认值[重复]

    这个问题在这里已经有答案了 我想为 Go 中的结构字段分配默认值 我不确定是否可能 但在创建 初始化结构的对象时 如果我没有为该字段分配任何值 我希望它从默认值分配 知道如何实现它吗 type abc struct prop1 int pr
  • 从两个向量中采样唯一对

    给定两个向量 a and b a letters 1 6 b letters 7 11 目标是使用以下方法对两列矩阵进行采样a and b 第一列应包含以下元素a使得每个元素a重复两次 第二列应包含以下元素b使得每个元素b也重复至少两次 还
  • 如何将 pandas 数据框显示为数据表?

    我想显示一个表 这是一个 pandas 数据框 作为数据表 https datatables net examples data sources dom html 在下面的简化示例中 我读取了用户提供的两个数字 它们确定了表格的行号和列号
  • 如何在 CodeIgniter 中获取 show_error() 来加载视图?

    我需要在所有页面中加载头部视图和脚部视图 但show error使用自己的完整模板 它在加载此模板后停止执行 因此如果我愿意 页脚甚至不会加载 我应该重写这个方法还是有其他方法 所以 我就是这样做的 而且效果非常好 我延长了CI Excep
  • 为什么元胞数组中的尾随逗号是有效的 Matlab 语法?

    今天我很惊讶地发现 A 1 2 3 and B 1 2 3 都是 MATLAB 中的有效语法 我原以为第二个语句会产生错误 据我所知 它们产生相同的单元阵列 all A B 返回真 允许使用第二种语法有什么原因吗 这是解析器中的错误吗 是A