Arrays Matlab语法混乱

Arrays Matlab语法混乱,arrays,matlab,Arrays,Matlab,我有下面的Matlab语法,我不明白它在做什么,特别是xDiff==2部分,它看起来像是引用tDiff数组中特定值的奇怪方式。有人能提供建议吗 tTacho = tDiff(xDiff == 2); tDiff和xDiff是47999X1阵列 谢谢第一个操作xDiff==2返回一个逻辑数组,该数组为您提供信息,xDiff中的哪些位置等于2。然后将此位置应用于第二个数组yDiff。可能以下是简单的hepls示例(简化): 在本例中,tTacho和tTacho2是相同的。我们基本上是这样做的:xD

我有下面的Matlab语法,我不明白它在做什么,特别是xDiff==2部分,它看起来像是引用tDiff数组中特定值的奇怪方式。有人能提供建议吗

tTacho = tDiff(xDiff == 2);
tDiff和xDiff是47999X1阵列


谢谢

第一个操作
xDiff==2
返回一个逻辑数组,该数组为您提供信息,
xDiff
中的哪些位置等于
2
。然后将此位置应用于第二个数组
yDiff
。可能以下是简单的hepls示例(简化):

在本例中,
tTacho
tTacho2
是相同的。我们基本上是这样做的:
xDiff
中的第三、第四和第九位置等于
2
,因此我们取
yDiff
的第三、第四和第九位置的值,并将它们存储在新数组
tTacho
中。请注意,
tTacho
的长度取决于
xDiff
中有多少值等于
2
(在本例中有3个,因此我们得到一个3x1数组)


数组
xDiff
yDiff
似乎在某种程度上是相关的,至少从逻辑角度来看,它们应该是相关的。我希望这有帮助

第一个操作
xDiff==2
返回一个逻辑数组,该数组提供信息,
xDiff
中的位置等于
2
。然后将此位置应用于第二个数组
yDiff
。可能以下是简单的hepls示例(简化):

在本例中,
tTacho
tTacho2
是相同的。我们基本上是这样做的:
xDiff
中的第三、第四和第九位置等于
2
,因此我们取
yDiff
的第三、第四和第九位置的值,并将它们存储在新数组
tTacho
中。请注意,
tTacho
的长度取决于
xDiff
中有多少值等于
2
(在本例中有3个,因此我们得到一个3x1数组)


数组
xDiff
yDiff
似乎在某种程度上是相关的,至少从逻辑角度来看,它们应该是相关的。我希望这有帮助

您需要阅读有关逻辑索引的内容。该行从
tDiff
的那些位置读取值,其中
xDiff==2
。您需要阅读有关逻辑索引的内容。这一行从
tDiff
xDiff==2
位置读取值。你知道如何使用python复制它吗?@Stevengodard我不熟悉python,但我可以告诉你的是,matlab有一种非常特殊的语言语法,正如名称所示,它关注矩阵和矩阵运算。因此,在matlab中,你通常可以用矩阵运算替换循环。我认为如果不在python中使用循环,你将无法复制此代码,但我不能100%确定。你会知道如何使用python复制此代码吗?@Stevengodard我不熟悉python,但我可以告诉你的是,matlab有一种非常特殊的语言语法,顾名思义,它专注于矩阵和矩阵运算。所以在matlab中,你通常可以用矩阵运算来代替循环。我认为如果不在python中使用循环,你将无法重现这段代码,但我不能100%确定。
xDiff   = [0 0 2 2 0 0 0 0 2];    % simplified: only values 0 or 2
yDiff   = [1 2 3 4 5 6 7 8 9];   
tTacho  = [    3 4         9];
tTacho2 = yDiff(xDiff==2);