Matlab 中的方括号运算符在其两个值之间没有逗号

Square brackets operator in Matlab without comma between its two values

我很难弄清楚这段代码的作用,因为谷歌搜索方括号不会为搜索引擎的工作方式产生合适的结果。

id2 是一个 1x265 数组(所以基本上是一个具有 265 个值的一维向量)

m 是一个 1x245 数组(所以基本上是一个具有 245 个值的一维向量)

id2 = id2([m m(end)+1]);

就我目前所见,方括号中的第一个值和第二个值之间总是有一个逗号。

如果是

id2 = id2[m, m(end)+1]

在我的 Matlab 小经验中,我会知道它的含义,但事实并非如此,以前从未见过这个。

id2 之后的方括号也包含在括号 ( ) 中,所以这让我觉得

id2 = id2([m m(end)+1])id2 = id2[m, m(end)+1]是两个完全不同的东西。

你能解释一下这段代码的作用吗?

[1, 2][1 2] 是等价的。使用方括号构建数组时,逗号或 space 可以表示元素分隔。
使用括号 () 的索引必须使用逗号来完成:A(3,1),而不是 A(3 1)。这同样适用于函数中的参数列表:mean(A,[],1) 需要逗号来分隔各种参数。

id2 = id2([m m(end)+1]); 应该很清楚:您构建一个数组 [m m(end)+1],即您使用 m 并在其末尾添加一个额外的元素 m(end)+1。据推测,这些应该是整数,因为看起来它们正在索引 id2。综上所述,id2 = id2([m, m(end)+1]); 完全等价。

我可以推荐阅读 this post 了解 MATLAB 中的各种索引方式。