how to test if toolbox exists?

조회 수: 79 (최근 30일)
C Lira
C Lira 2012년 5월 3일
댓글: Farid 2022년 8월 16일
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?

답변 (4개)

Walter Roberson
Walter Roberson 2012년 5월 3일
  댓글 수: 11
Walter Roberson
Walter Roberson 2022년 8월 15일
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 2022년 8월 16일
@Walter Roberson, @Image Analyst. Thank you big time!

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


Image Analyst
Image Analyst 2012년 5월 3일
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 2012년 5월 3일
Try this:
v = ver;
has_fsolve = any(strcmp(cellstr(char(v.Name)), 'Optimization Toolbox'));
Or more specifically:
has_fsolve = ~isempty(which('fsolve'));
  댓글 수: 2
Jan
Jan 2012년 5월 3일
{v.Name} is nicer than "cellstr(char(v.Name))".
Geoff
Geoff 2012년 5월 4일
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.

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


Reza Ahmadzadeh
Reza Ahmadzadeh 2015년 6월 29일
You can use the existing function in FileExchange called isToolboxAvailable . The usage is as follows:
result = isToolboxAvailable('image processing toolbox','error');
  댓글 수: 1
Kjartan Andersen
Kjartan Andersen 2016년 2월 27일
Not a good idea to have an external functionality to check for dependencies. What if the user doesn't have this tool?

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

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by