Rapid Stateflow.Transition finding

1 visualización (últimos 30 días)
Massimiliano
Massimiliano el 27 de Mayo de 2013
Is there a rapid way to find all the 'Stateflow.Transition' from a state A, to a state B?

Respuesta aceptada

Siddharth
Siddharth el 30 de Mayo de 2013
You can do that using a simple MATLAB script using the Stateflow API. Find the Stateflow API below: http://www.mathworks.com/help/stateflow/programmatic-manipulation.html
Here is a simple example that looks for transitions between the states "upshifting" and "steady_state". To run the example, open the model sf_car and run the following code:
rt = sfroot;
transArray = rt.find('-isa','Stateflow.Transition');
len_transarray = length(transArray);
x = zeros(len_transarray,1);
y = zeros(len_transarray,1);
for i = 1: len_transarray
if ~isempty(strfind(get(get(transArray(i),'Source'),'LabelString'),'upshifting'))
x(i) = i;
end
if ~isempty(strfind(get(get(transArray(i),'Destination'),'LabelString'),'steady_state'))
y(i) = i;
end
end
output = transArray(find(x>0 & y > 0))
  1 comentario
Massimiliano
Massimiliano el 31 de Mayo de 2013
why don't you use the 'strcmp(s1,s2)'? is the 'isempty(strfind(s1,s2))' more rapid? moreover, it could happen that you may find the transitions from 'upshifting' to 'steady_state', but also the transitions from 'upshifting_whatever' to 'steady_state_whatever'.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Stateflow en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by