Avoid searching the commented out logic seach in Stateflow API.

I'm using a script to find all the parameters used in Stateflow logic of the model.
rt = sfroot;
m= rt.find('-isa','Stateflow.Chart'); % If not used in Simulink , Check in stateflow
params_sf = m.find('-isa', 'Stateflow.Data','Name',c_name);
*c_name - has the parameter name
But the only issue in this finds the parameters which are involved also in commented out statecharts.
How can i avoid searching in Commented out statecharts ??

 採用された回答

Uday Pradhan
Uday Pradhan 2020 年 12 月 14 日

0 投票

Hi Arjun,
According to my understanding, you want ignore the charts that are commented in the Stateflow logic of your model. To do this, you can create a custom filtering function to be used along with "find". Example:
f = @(h) (strcmp(get_param(h.path,'Commented'),'off')); %for the chart, return true if it is not commented
m = rt.find('-isa','Stateflow.Chart','-and','-function',f); %only returns those charts which are uncommented
I hope this helps!

7 件のコメント

Arjunkrishna Mitta
Arjunkrishna Mitta 2020 年 12 月 14 日
編集済み: Arjunkrishna Mitta 2020 年 12 月 14 日
I tried the above but its not working .. The variable f doesnt have any value stored after evaluation.
Uday Pradhan
Uday Pradhan 2020 年 12 月 14 日
Hi Arjun, Please elaborate. Is it not filtering commented charts?
Arjunkrishna Mitta
Arjunkrishna Mitta 2020 年 12 月 14 日
Sorry its my mistake its working now. I had used rt.path which was NULL ... But changing it to just rt solved the issue. Its working as expected Thank you
Uday Pradhan
Uday Pradhan 2020 年 12 月 14 日
That's nice to hear, Arjun!
Arjunkrishna Mitta
Arjunkrishna Mitta 2020 年 12 月 14 日
Hello Uday can you cross check the syntax. Because its also finding parameters in stateflow which are not commented as well.
rt = sfroot;
f = @(rt)(strcmp(get_param(rt,'Commented'),'off'));%for the chart, return true if it is not commented
m = rt.find('-isa','Stateflow.Chart','-and','-function',f);
params_sf = m.find('-isa', 'Stateflow.Data','Name',c_name);
Arjunkrishna Mitta
Arjunkrishna Mitta 2020 年 12 月 14 日
I'm unable to find documentation as well for the custom filter you mentioned. even the link to documentation helps
Uday Pradhan
Uday Pradhan 2020 年 12 月 14 日
get_param(blockName,'Commented') returns 'on' or 'off' according to if the block is commneted or not. So I used this property to check if a chart if commented or not. In its present form:
f = @(rt)(strcmp(get_param(rt,'Commented'),'off'));%for the chart, return true if it is not commented
m = rt.find('-isa','Stateflow.Chart','-and','-function',f);
Should give charts that are NOT commented. I assume that is what you originally asked for. Here are the documentation pages I followed: find (check example section) and get_param.

サインインしてコメントする。

その他の回答 (0 件)

製品

リリース

R2018b

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by