Как создать состояние потока состояния?

Я пытаюсь создать конечный автомат (поток состояний). Вход является вектором.
Условие для переключения в одном направлении:

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

и для другого направления:

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

Но я получаю сообщение об ошибке в окне просмотра диагностики:

Незаконное использование матрицы или векторного типа, где ожидался скаляр.

Зачем? Но если я введу эти условия в командном окне MATLAB, сообщение об ошибке не появится.

0 ответов

Ваши скобки содержат логическую индексацию вектора.

Если вы введете их в приглашении Matlab, вы получите вектор / массив, содержащий все элементы, удовлетворяющие условию.

Однако для потока состояний скобки указывают условие перехода и должны оцениваться как одно (скалярное) истина / ложь. Здесь нет смысла приходить к выделению элементов вектора.

Если вместо этого вы хотите выполнять переход всякий раз, когда вектор меньше 494 или больше 631, переход должен выглядеть так:

[vector < 494 || vector > 631]

И вектор должен быть скаляром в контексте потока состояний.

Другие вопросы по тегам