How to find data with specific data type.
이전 댓글 표시
In my code generation, my target hardware does not support double-precision float, so I want to scan my models for any doubles before generating code.
Here is an example entry from my model file of what I want to find (it is in a Stateflow chart):
data {
id 203
ssIdNumber 100
name "cntr"
linkNode [117 0 204]
scope FUNCTION_INPUT_DATA
machine 1
props {
type {
primitive SF_DOUBLE_TYPE
isSigned 1
wordLength "16"
}
}
dataType "double"
}
The following line of code does NOT work:
dataTypes = find_system(sys,'FindAll','on','LookUnderMasks','all','dataType','double');
Can anyone provide a script to find all such occurrences?
답변 (1개)
Kaustubha Govind
2012년 8월 2일
I think the safest way to check datatypes used in a model is to compile the model and check the compiled datatypes at the boundary of each block. You can do this for one block using something like:
vdp([],[],[],'compile');
d = get_param(gcb,'CompiledPortDataTypes');
vdp([],[],[],'term');
You will need to inspect 'd' to see if contains double.
(Note: if you need to disallow all floating-point types, you can simply uncheck Support: floating-point numbers in the Configuration Parameters window)
댓글 수: 4
Peter
2012년 8월 2일
Kaustubha Govind
2012년 8월 3일
"gcb" basically returns the path to a selected block. It looks like you may not have any block in your model selected? Alternatively, you can use a specific block's path:
d = get_param('Kln_Cycle/In1','CompiledPortDataTypes');
Peter
2012년 8월 3일
Kaustubha Govind
2012년 8월 6일
I've used the Stateflow API in the past to look inside Stateflow objects, but I don't know what the exact commands to use in your case might be. Perhaps going through the documentation will give you some ideas.
카테고리
도움말 센터 및 File Exchange에서 Schedule Model Components에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!