Check if Simulink is started (for faster use of find_system)

3 次查看(过去 30 天)
I have a function that calls
find_system('SearchDepth',0);
to check if there are any Simulink elements. As expected, if no models are open, it returns an empty cell array.
BUT Matlab spends ages (about 5 seconds) while "Starting Simulink...". I could omit the check if I knew that Simulink was not started and save the 5 Seconds.
  • Is there a way to programmatically check if Simulink is already started?

采纳的回答

dbmn
dbmn 2016-9-7
I found a workaround that I wanted to share
% check if Simulink was started in the past
current_licenses = license('inuse');
if strcmp('simulink', current_licenses)
% code that calls findsystem
end
It is not the nicest way to check if simulink has been started in the past by checking the currently used licenses on the machine - but it works most of the time.
Attention: by doing this you will not catch any timeouts that might occur when you are using a server based license.

更多回答(1 个)

Malcolm Wood
Malcolm Wood 2021-6-10
Since R2020b there's a function called isSimulinkStarted which tells you whether the "Starting Simulink..." process has already run - which, as you've seen, isn't quite the same as whether a license has been checked out.

类别

Help CenterFile Exchange 中查找有关 Naming Conventions 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by