Azzera filtri
Azzera filtri

Rapid Stateflow.Transition finding

4 visualizzazioni (ultimi 30 giorni)
Massimiliano
Massimiliano il 27 Mag 2013
Is there a rapid way to find all the 'Stateflow.Transition' from a state A, to a state B?

Risposta accettata

Siddharth
Siddharth il 30 Mag 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 Commento
Massimiliano
Massimiliano il 31 Mag 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'.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Stateflow in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by