0

我正在尝试创建一个状态机(状态流)。输入是一个向量。
单向切换的条件是:

[vector(vector < 494 | vector > 631)]

而对于另一个方向:

[vector(vector > 494 & vector < 631)]

但我在诊断查看器窗口中收到一条错误消息:

在需要标量的情况下非法使用矩阵或向量类型。

为什么?但是,如果我在 MATLAB 命令窗口中键入这些条件,则不会出现错误消息。

4

1 回答 1

0

您的括号语句包含向量的逻辑索引。

如果您在 matlab 提示符下键入它们,您将获得一个向量/数组,其中包含满足条件的所有元素。

但是,对于状态流,括号表示转换的条件,并且必须评估为单个(标量)真/假。在那里选择向量的元素是没有意义的。

如果您有兴趣在向量小于 494 或大于 631 时进行转换,则转换应如下所示:

[vector < 494 || vector > 631]

并且向量必须是状态流上下文中的标量。

于 2019-05-14T17:02:46.053 回答