how to test if toolbox exists?

I am writings some code that I wish to distribute open source. Within my code, I'd like to check if the end-users have fsolve in their installation and if not, use fzero. I'd rather the end-user not get ugly messages about functions not existing, and beginners will be so confused about what to do to fix the error, or they will hate Matlab. Is there a way that this can be implemented easily?

Respuestas (4)

Walter Roberson
Walter Roberson el 3 de Mayo de 2012

6 votos

For example,
license('test', 'image_toolbox')

11 comentarios

Mohammad Nazrin Jumali
Mohammad Nazrin Jumali el 14 de Mzo. de 2016
it says '1', what does it mean?
Walter Roberson
Walter Roberson el 14 de Mzo. de 2016
It means the license does exist.
Farid
Farid el 8 de Ag. de 2022
what should I type for deep learning toolbox, please?
@Farid, use the line below for Neural_Network_Toolbox to see if you have a license for the Deep Learning Toolbox.
% Check that user has the specified Toolbox installed and licensed.
hasLicenseForToolbox = license('test', 'image_toolbox'); % Check for Image Processing Toolbox.
% hasLicenseForToolbox = license('test', 'Image_Acquisition_Toolbox'); % Check for Image Acquisition Toolbox.
% hasLicenseForToolbox = license('test', 'Statistics_Toolbox'); % Check for Statistics and Machine Learning Toolbox.
% hasLicenseForToolbox = license('test', 'Signal_Toolbox'); % Check for Signal Processing Toolbox.
% hasLicenseForToolbox = license('test', 'Video_and_Image_Blockset'); % Check for Computer Vision System Toolbox.
hasLicenseForToolbox = license('test', 'Neural_Network_Toolbox'); % Check for Deep Learning Toolbox.
Farid
Farid el 9 de Ag. de 2022
@Image Analyst Thank you so much. it doesn't answer my question tho. I asked about the deep learning toolbox as it can be seen in >>ver.
Farid
Farid el 9 de Ag. de 2022
I embedded @Reza Ahmadzadeh's code in mine to resolve the problem anyway.
When you asked "what should I type for deep learning toolbox, please?" I assumed you wanted a logical variable that gave true or false for whether or not you had the Deep Learning Toolbox. So that's why I gave you
hasLicenseForToolbox = license('test', 'Neural_Network_Toolbox'); % Check for Deep Learning Toolbox.
It does exactly that, which is what I thought you asked. Not sure why you said it didn't resolve your problem unless "what should I type for deep learning toolbox, please?" means something different than "what can I type to determine if I have a license for the Deep Learning Toolbox?"
@Reza Ahmadzadeh's code depends on a third party function, not a simple, built-in, one-line function call like I gave you. There is no need to use Reza's code (like the comment after it said).
Farid
Farid el 15 de Ag. de 2022
@Image Analyst excuse me, I didn't get any notification on your response, It didn't help because eventhough I had the deep learning toolbox installed it returned 0. if it shouldn't, I have non idea what the problem could be.
Thanks
Image Analyst
Image Analyst el 15 de Ag. de 2022
Call tech support and tell them it's an installation issue. Or send the results of "ver" to support@mathworks.com
Note that 'Neural_Network_Toolbox' is the old name for Deep Learning Toolbox, and the old name is still used internally for license capabilities.
If you want to find out whether Deep Learning Toolbox is installed, then
ver('nnet')
----------------------------------------------------------------------------------------------------- MATLAB Version: 9.12.0.2027246 (R2022a) Update 4 MATLAB License Number: Operating System: Linux 5.4.185-0504185-generic #202203160950 SMP Wed Mar 16 14:00:16 UTC 2022 x86_64 Java Version: Java 1.8.0_292-b10 with AdoptOpenJDK OpenJDK 64-Bit Server VM mixed mode ----------------------------------------------------------------------------------------------------- Deep Learning Toolbox Version 14.4 (R2022a)
Again, 'nnet' is an internal name for this purpose, derived from the old marketing name Neural Network Toolbox
If ver shows the toolbox but license test does not show it, then go to the command window and Help -> Licensing -> Update Current Licenses... to make sure the license is up to date (in case features got added to the license after the file was downloaded.)
Farid
Farid el 16 de Ag. de 2022
@Walter Roberson, @Image Analyst. Thank you big time!

Iniciar sesión para comentar.

Image Analyst
Image Analyst el 3 de Mayo de 2012

1 voto

Here's the code I use:
% Check that user has the Image Processing Toolbox installed.
hasIPT = license('test', 'image_toolbox');
if ~hasIPT
% User does not have the toolbox installed.
message = sprintf('Sorry, but you do not seem to have the Image Processing Toolbox.\nDo you want to try to continue anyway?');
reply = questdlg(message, 'Toolbox missing', 'Yes', 'No', 'Yes');
if strcmpi(reply, 'No')
% User said No, so exit.
return;
end
end
You'll need to adapt it for any toolboxes that you want to check.
Geoff
Geoff el 3 de Mayo de 2012

0 votos

Try this:
v = ver;
has_fsolve = any(strcmp(cellstr(char(v.Name)), 'Optimization Toolbox'));
Or more specifically:
has_fsolve = ~isempty(which('fsolve'));

2 comentarios

Jan
Jan el 3 de Mayo de 2012
{v.Name} is nicer than "cellstr(char(v.Name))".
Geoff
Geoff el 4 de Mayo de 2012
Oh, thanks =) I get a bit baffled sometimes when things look like the right type but return multiple answers. That's a much nicer syntax.

Iniciar sesión para comentar.

Reza Ahmadzadeh
Reza Ahmadzadeh el 29 de Jun. de 2015

0 votos

You can use the existing function in FileExchange called isToolboxAvailable . The usage is as follows:
result = isToolboxAvailable('image processing toolbox','error');

1 comentario

Kjartan Andersen
Kjartan Andersen el 27 de Feb. de 2016
Not a good idea to have an external functionality to check for dependencies. What if the user doesn't have this tool?

Iniciar sesión para comentar.

Categorías

Más información sobre Introduction to Installation and Licensing en Centro de ayuda y File Exchange.

Productos

Preguntada:

el 3 de Mayo de 2012

Comentada:

el 16 de Ag. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by