How can I quickly pass the output of a Simulink block to a GUI?

3 views (last 30 days)
I currently have a simulink model in which a custom matlab function block performs some signal processing on a frame of data and then saves the results to the workspace with every iteration with the "assignin" command.
I then have a GUI, which I made in GUIDE, that uses a timer object to repeatedly pull this data from the workspace and display it in a variety of ways with the "evalin" command.
This works fine, but it is a little slow. I know I can read object parameters of a simulink block with my gui directly with the "get_param" command.
Is it aso possible to read the output of blocks in this way?
That is, can I employ a more direct or continuous method to read the output of the simulink blocks into my GUI without reading/writing to the workspace?
Thanks!
-Will

Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 30 Apr 2013
get_param allows to read block parameters, the block output is not a parameter
  3 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 30 Apr 2013
you can save your output to workspace(the fastest way) or to a file,
Will Forfang
Will Forfang on 30 Apr 2013
I found a solution, or a work-around, that operates faster than the assignin/evalin method however I have to close/reopen the model every time I stop it. I simply save the output of the function to the UserData parameter of the block. Now I can access it with get_param.
In case anyone needs to do something similar, here is a simple example:
function y = f(x)
coder.extrinsic('set_param');
%coder.extrinsic tells the compiler to ignore "set_param"
%because it isn't supported.
y = x*5;
set_param('ModelName/BlockName','UserData',y);
Now, while this model is running, from a GUI(or from the workspace) one can execute the following command:
get_param('ModelName/BlockName','UserData')
However, now I have a new question:
When I stop the model and try to run it again I get this error: Object parameter contains an invalid handle. Does anyone know what causes this?
Thanks.

Sign in to comment.


Rey
Rey on 3 May 2013
Have you tried using an event listener? Check out the link below and do some googling, I guess it is what you are looking for:

Community Treasure Hunt

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

Start Hunting!