С помощью persistent получилось сделать то, что хотел. Конечно не совсем красиво, но тем не менее. Но обнаружил занятный баг, который никак не могу понять почему происходит. В коде есть такое место смены состояния
Код
delta_delay = 0.5;
max_delay = 9;
...
if delay < max_delay
if value > max_value
max_value = value;
max_value_delay = delay;
end
delay = delay + delta_delay;
else
delay = max_value_delay;
state = state + 1; % go to hold state
end
..
так вот, когда delta_delay = 0.5 смена состояний происходит корректно при delay = 9
а вот когда delta_delay = 0.1 смена состояний происходит при delay = 9.1.
Почему, не понятно, моделька в аттаче %)