Is that model already open?
I was just clicking through my vast inbox of unread e-mail, and saw a MATLAB Central news reader alert.
I quickly scanned the message and then clicked on the link to view the thread on MATLAB Central.
Regular contributor Ben Harper asked the question:
i can open a simulink file with "open_system" command. I want to see if the simulink model is opened?
how can i check whether the mdl file is opened or not?
thank you.
His first response came from Jason Retik:
openModels = find_system('SearchDepth', 0)
openModels will be a cell array of all the currently opened models. You can use the STRCMP function on openModels to check whether a particular model is open.
This has all the ingredients to get Ben up and running, but Gavin Walker also replied:
Try "bdIsLoaded"
Gavin
While I thought a function like this existed, it wasn't at the top of my mind. bdIsLoaded returns true for models that are in memory. The function takes a model name as a string, or a cell array of model names as its input.
If you edit bdIsLoaded.m, you will see that it includes the exact find_system call Jason suggested, plus a little code to check if your specific model is loaded.
Is that the answer?
Going back to the original question, I want to further improve this answer. The original question was about the use of open_system, which is different than load_system. Block diagrams can be loaded, but not visible to the user. I think Ben's original question is whether a particular model is visible or not, so here is my answer:
First check to see if the model is loaded, and if it is, use get_param to check the Shown property. Here is an example:
>> load_system('vdp')
>> bdIsLoaded('vdp')
ans =
1
>> get_param('vdp','Shown')
ans =
off
>> open_system('vdp')
>> get_param('vdp','Shown')
ans =
on
The model is only visible if Shown==on.
Where do you get your answers?
How about technical support? Leave a comment here and tell us about it.
评论
要发表评论,请点击 此处 登录到您的 MathWorks 帐户或创建一个新帐户。