필터 지우기
필터 지우기

take the real data type of parameters from the Simulink model

조회 수: 8 (최근 30일)
Diana Acreala
Diana Acreala 2011년 9월 15일
Hi! What do you think about this?
I'm using R2009b Matlab version. I have my_para.mat set of parameters that are used in my_model.mld.
My problem is related to the data type of these parameters. Even if my 'para1' parameter is used as uint16 in the Simulink model, Matlab takes it as double. What can I do to take the real data type directly from the model? I have a GUI interface and I need only to display these real data types.
Thank you in advance!
  댓글 수: 4
Diana Acreala
Diana Acreala 2011년 9월 15일
Well...I have created my_para.mat and I know for sure that these are used in the model. After that i'm playing with this .mat file.
TAB
TAB 2011년 9월 15일
I still confused what you want to do.
If you want to get the data types of parameters from model workspace, take handle of model and use get_param() function.
See
http://www.mathworks.in/help/toolbox/simulink/ug/f4-140122.html
See 'model construction commands' to see how to use get_param().

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

답변 (7개)

Fangjun Jiang
Fangjun Jiang 2011년 9월 15일
When you create your .mat file, use the following to set up the value and then save to the .mat file.
para1=uint16(25);
When you try to get the data type of this parameter, use
DataType=class(para1)
  댓글 수: 4
Diana Acreala
Diana Acreala 2011년 9월 15일
But i have hundreds of parameters used in my model...
Fangjun Jiang
Fangjun Jiang 2011년 9월 15일
get_param() works for vector input which means if you have 100 block handles, it will give you 100 output data types. But, would it be better to show the data type in model directly. Your GUI would be hard to show hundreds of parameters anyway. In your Simulink model,click meny Format->Port/Signal Displays, check "Port Data Types"

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


James
James 2011년 9월 15일
In the Simulink model use a Data Type Conversion block. It's in Commonly Used Blocks.
When I've wrestled with this I found it easiest (i.e. most predictable/reliable) to take in everything as doubles and to output it as doubles in and out of the Simulink model.
  댓글 수: 3
Diana Acreala
Diana Acreala 2011년 9월 15일
What I need is to display on my GUI interface the real data type of my parameters used in the model... This block is not helping unfortunately.
James
James 2011년 9월 15일
I was referring to the data.
Turn on the view Fangjun referred to, where port data types are displayed on the model. It will let you confirm what the actual data types are.

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


Diana Acreala
Diana Acreala 2011년 9월 19일
Hello! Can anybody help me with another ideea??
  댓글 수: 9
Diana Acreala
Diana Acreala 2011년 9월 20일
I double click on the corresponding block where I have my parameter and in Signal Atributes tab is the data type of the parameter used... I don't know how to send this data types to workspace in matlab.
Fangjun Jiang
Fangjun Jiang 2011년 9월 21일
See the comment in my answer. DataType=get_param(BlockFullPath,'OutDataTypeStr')

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


TAB
TAB 2011년 9월 20일
Your question is still not clear. What is 'corresponding block '
If you mean 'constant' blocks and you want output datatype of these blocks then try this.
h=load_system('yourmodel');
CBlks= find_system(h, 'SearchDepth',2,'FindAll', 'on', 'BlockType', 'Constant');
if(~isempty(CBlks))
CBlks_Name=get_param(CBlks,'Name');
CBlks_DType=get_param(CBlks,'OutDataTypeMode');
end
'CBlks_Name' will store names of constant blocks and 'CBlks_DType' will store thier output datatypes. You can send them anywhere you want.
  댓글 수: 2
Diana Acreala
Diana Acreala 2011년 9월 20일
Ok!!! This is what I want! Thank you!! Now it's working! Great! You saved my day:)
Diana Acreala
Diana Acreala 2011년 9월 20일
Another think. Do you know if it's possible to take the name of the parameter used in the block?
CBlks_Name=get_param(CBlks,'Name');
This will return the name of the block, not the name of the variable used in the block.

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


TAB
TAB 2011년 9월 20일
You may using parameter name in the 'Constant value' field of constant block.
Try
CBlks_ValStr=get_param(CBlks,'Value');
using get_param() you can retrieve the properties of model and any blocks. Similarly you can set thier properties using set_param().
For list of model and block properties please see
  댓글 수: 1
Diana Acreala
Diana Acreala 2011년 9월 21일
I could not found nothing to help me to find the names of my used parameters in the Simulink model.(To send these names in matlab workspace)
Only 'OutDataTypeMode' helps me by returning (in Matlab workspace) data types used... but I don't know exactly what parameter has what kind of data type(without looking directly into the model).

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


Diana Acreala
Diana Acreala 2011년 9월 22일
I am using this code for getting all my block types and I see that is not returning also blocks used in my subsystems. It only gives me a list with some blocks that I used in the model, like:'Gain', 'Constant', 'Display', etc and 'SubSystem'.
blks = find_system(gcs, 'Type', 'block'); % Where gcs specifies the currently selected % system or subsystem listblks = get_param(blks, 'BlockType')
Do you know how can I look under these subsystems?To see what i have used there?

TAB
TAB 2011년 9월 22일
hhmmm......
Answer is in you question itself (See comment). gcs specifies the currently selected system or subsystem.
Take handle of model and use it with find_system(). Also go through the option available for find_system().
doc find_system
mdlhandle=load_sysetm('MyModel');
blks = find_system(mdlhandle, 'Type','block');
% OR
blks = find_system(mdlhandle, 'FindAll','on','Type','block');
listblks = get_param(blks, 'BlockType');
listblksname = get_param(blks, 'Name');

카테고리

Help CenterFile Exchange에서 Event Functions에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by