Is there a rapid way to find all the 'Stateflow.Transition' from a state A, to a state B?

 채택된 답변

Siddharth
Siddharth 2013년 5월 30일

0 개 추천

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

Massimiliano
Massimiliano 2013년 5월 31일
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'.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터 및 File Exchange에서 Stateflow에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by