34 votes

Comment vérifier si des boîtes à outils MATLAB sont installées dans un script/fonction ?

Comment vérifier si des boîtes à outils MATLAB sont installées dans un script/fonction ? (vérifier les versions des boîtes à outils serait également bien !) Cela pourrait fournir un message d'erreur rapide et utile lorsque quelqu'un tente d'exécuter un script sans une boîte à outils requise.

Une solution rapide, bien qu'approximative, qui me vient à l'esprit consiste à analyser la sortie texte de la fonction ver commande. Je me demande s'il y a un meilleur moyen.

Une recherche rapide a révélé ver product o el license avec la fonction 'test' peut être utile, mais je n'ai pas pu trouver de correspondance entre les noms des boîtes à outils (c'est à dire, le nom de la boîte à outils) et le nom de l'utilisateur. 'Image Processing Toolbox' ) aux noms de produits (ex. 'control' ) ou des noms de fonctionnalités (ex. image_toolbox ).

De plus, quand j'ai lancé license('inuse') Je n'ai reçu que la réponse suivante :

\>> a = license('inuse'); a

a = 

    feature: 'matlab'
       user: <username>

J'espérais une liste des nombreuses boîtes à outils auxquelles j'ai accès.

Cette question a été posée en essayant de tester un script de collègue de travail de manière anticipée. Malheureusement, il nécessitait l'utilisation de l'Image Processing Toolbox, dont je suis actuellement dépourvu. Un message d'erreur utile m'aurait fait gagner du temps pour essayer de diagnostiquer le problème. Maintenant, je vais attendre une version compilée avant de la tester.

27voto

gnovice Points 70970

L'un des inconvénients de la ver est qu'elle ne vous dit que ce qui est installé et non pas ce qui a un licence disponible . Il est possible d'avoir une boîte à outils installée et aucune licence pour l'utiliser (ou toutes les licences disponibles pourraient être vérifiées par d'autres utilisateurs). Un meilleur choix est le license qui (comme vous l'avez souligné) nécessite une fonction unique "chaîne de caractères" pour chaque boîte à outils.

Voici une ancienne liste de chaînes de caractéristiques pour diverses boîtes à outils, tirée d'un site aujourd'hui disparu. fil de discussion de newsgroup (le lien est maintenant mort) :

featureStr = {'Aerospace_Blockset'; ...
              'Aerospace_Toolbox'; ...
              'Bioinformatics_Toolbox'; ...
              'Communication_Blocks'; ...
              'Communication_Toolbox'; ...
              'Compiler'; ...
              'Control_Toolbox'; ...
              'Curve_Fitting_Toolbox'; ...
              'Data_Acq_Toolbox'; ...
              'Database_Toolbox'; ...
              'Datafeed_Toolbox'; ...
              'Dial_and_Gauge_Blocks'; ...
              'Distrib_Computing_Toolbox'; ...
              'Econometrics_Toolbox'; ...
              'EDA_Simulator_Link_DS'; ...
              'Embedded_Target_c166'; ...
              'Embedded_Target_c2000'; ...
              'Embedded_Target_c6000'; ...
              'Embedded_Target_MPC555'; ...
              'Excel_Link'; ...
              'Filter_Design_HDL_Coder'; ...
              'Filter_Design_Toolbox'; ...
              'Fin_Derivatives_Toolbox'; ...
              'Financial_Toolbox'; ...
              'Fixed_Income_Toolbox'; ...
              'Fixed_Point_Toolbox'; ...
              'Fixed-Point_Blocks'; ...
              'Fuzzy_Toolbox'; ...
              'GADS_Toolbox'; ...
              'IDE_Link_MU'; ...
              'Identification_Toolbox'; ...
              'Image_Acquisition_Toolbox'; ...
              'Image_Toolbox'; ...
              'Instr_Control_Toolbox'; ...
              'Link_for_Incisive'; ...
              'Link_for_ModelSim'; ...
              'Link_for_Tasking'; ...
              'Link_for_VisualDSP'; ...
              'MAP_Toolbox'; ...
              'MATLAB'; ...
              'MATLAB_Builder_for_dot_Net'; ...
              'MATLAB_Builder_for_Java'; ...
              'MATLAB_Distrib_Comp_Engine'; ...
              'MATLAB_Excel_Builder'; ...
              'MATLAB_Link_for_CCS'; ...
              'MATLAB_Report_Gen'; ...
              'MBC_Toolbox'; ...
              'MPC_Toolbox'; ...
              'NCD_Toolbox'; ...
              'Neural_Network_Toolbox'; ...
              'OPC_Toolbox'; ...
              'Optimization_Toolbox'; ...
              'PDE_Toolbox'; ...
              'Power_System_Blocks'; ...
              'Real-Time_Win_Target'; ...
              'Real-Time_Workshop'; ...
              'RF_Blockset'; ...
              'RF_Toolbox'; ...
              'Robust_Toolbox'; ...
              'RTW_Embedded_Coder'; ...
              'Signal_Blocks'; ...
              'Signal_Toolbox'; ...
              'SimBiology'; ...
              'SimDriveline'; ...
              'SimElectronics'; ...
              'SimEvents'; ...
              'SimHydraulics'; ...
              'SimMechanics'; ...
              'Simscape'; ...
              'SIMULINK'; ...
              'Simulink_Control_Design'; ...
              'Simulink_Design_Verifier'; ...
              'Simulink_HDL_Coder'; ...
              'Simulink_Param_Estimation'; ...
              'SIMULINK_Report_Gen'; ...
              'SL_Verification_Validation'; ...
              'Spline_Toolbox'; ...
              'Stateflow'; ...
              'Stateflow_Coder'; ...
              'Statistics_Toolbox'; ...
              'Symbolic_Toolbox'; ...
              'SystemTest'; ...
              'Video_and_Image_Blockset'; ...
              'Virtual_Reality_Toolbox'; ...
              'Wavelet_Toolbox'; ...
              'XPC_Embedded_Option'; ...
              'XPC_Target'};

Cette liste couvre les plus courantes, mais n'est pas exhaustive et n'inclut pas les chaînes de caractéristiques des boîtes à outils les plus récentes. Il ne semble pas y avoir de liste facilement disponible des chaînes de caractéristiques actuelles pour toutes les boîtes à outils MathWorks. Je pense que vous pouvez les trouver sur les lignes "INCREMENT" dans un fichier de licence, ou ( comme le mentionne vlee dans un commentaire ), vous pouvez appeler une fonction à partir d'une boîte à outils donnée, puis utiliser la fonction license('inuse') pour obtenir la chaîne de caractéristiques à partir de la liste affichée des boîtes à outils actuellement utilisées. Cependant, les deux options ci-dessus nécessitent une licence déjà disponible.

En utilisant la liste des chaînes de caractères ci-dessus et la fonction license vous pouvez vérifier quelles boîtes à outils vous avez une licence d'utilisation. Le code suivant vérifie les licences pour l'ensemble de la liste ci-dessus :

index = cellfun(@(f) license('test', f), featureStr);
availableFeatures = featureStr(logical(index));

Cependant, ce qui précède ne fait que confirmer que la licence existe non pas que ce soit possible vérifié . La licence peut avoir expiré ou toutes les licences disponibles peuvent avoir été vérifiées par d'autres utilisateurs. Pour être absolument certain de pouvoir utiliser les boîtes à outils disponibles, vous pouvez essayer de récupérer une licence pour celles dont vous avez besoin et vérifier si vous avez réussi. Le code suivant tente d'extraire une licence pour toutes les boîtes à outils disponibles trouvées ci-dessus :

index = cellfun(@(f) license('checkout', f), availableFeatures);
checkedOutFeatures = availableFeatures(logical(index));

UN MOT D'AVERTISSEMENT .. :

Comme le mentionne Jason S dans un commentaire ci-dessous il n'est pas judicieux de vérifier les licences au hasard, car elles ne seront pas libérées avant la fermeture de MATLAB. Vous ne devez vérifier qu'une licence dont vous savez que vous aurez besoin pour une application donnée ! Normalement, les licences ne sont pas vérifiées tant que vous n'essayez pas d'utiliser une fonction d'une boîte à outils donnée. Par exemple :

>> license('inuse')
matlab
>> gaussFilter = fspecial('gaussian');  % An Image Processing Toolbox function
>> license('inuse')
image_toolbox
matlab

11voto

Jonas Points 54073

Ver semble être la voie à suivre, et l'analyse syntaxique ne devrait pas être trop difficile. Voyons voir :

function tf = areTheseToolboxesInstalled(requiredToolboxes)
%ARETHESETOOLBOXESINSTALLED takes a cell array of toolbox names and checks whether they are currently installed
% SYNOPSIS tf = areTheseToolboxesInstalled(requiredToolboxes)
%
% INPUT requiredToolboxes: cell array with toolbox names to test for. Eg. 
%        {'MATLAB','Image Processing Toolbox'}
%
% OUTPUT tf: true or false if the required toolboxes are installed or not
%%%%%%%%%%%%%%%%%%%%%%%%%%

% get all installed toolbox names
v = ver;
% collect the names in a cell array
[installedToolboxes{1:length(v)}] = deal(v.Name);

% check 
tf = all(ismember(requiredToolboxes,installedToolboxes));

Au fait, si vous avez besoin de vérifier les versions, verLessThan est votre ami.

7voto

tdc Points 1159

Je sais que c'est une vieille question, mais une réponse vraiment simple se trouve dans la question (analyser la sortie de ver) ....

>> v = ver;
>> setdiff({v.Name}, 'MATLAB')'

ans = 

    'Aerospace Blockset'
    'Aerospace Toolbox'
    'Bioinformatics Toolbox'
    'Communications System Toolbox'
    'Computer Vision System Toolbox'
    'Control System Toolbox'
    'Conversion to SeDuMi'
    'Curve Fitting Toolbox'
    'DSP System Toolbox'
    'Database Toolbox'
    'Datafeed Toolbox'
    'Econometrics Toolbox'
    'Embedded Coder'
    'Financial Derivatives Toolbox'
    'Financial Toolbox'
    'Fixed-Income Toolbox'
    'Fixed-Point Toolbox'
    'Fuzzy Logic Toolbox'
    'Global Optimization Toolbox'
    'Image Acquisition Toolbox'
    'Image Processing Toolbox'
    'Instrument Control Toolbox'
    'MATLAB Coder'
    'MATLAB Distributed Computing Server'
    'MATLAB Report Generator'
    'Mapping Toolbox'
    'Model Predictive Control Toolbox'
    'Neural Network Toolbox'
    'Optimization Toolbox'
    'Parallel Computing Toolbox'
    'Partial Differential Equation Toolbox'
    'Phased Array System Toolbox'
    'RF Toolbox'
    'Robust Control Toolbox'
    'Signal Processing Toolbox'
    'SimBiology'
    'SimDriveline'
    'SimElectronics'
    'SimEvents'
    'SimHydraulics'
    'SimMechanics'
    'SimPowerSystems'
    'SimRF'
    'Simscape'
    'Simulink'
    'Simulink 3D Animation'
    'Simulink Coder'
    'Simulink Control Design'
    'Simulink Design Optimization'
    'Simulink Fixed Point'
    'Simulink Report Generator'
    'Simulink Verification and Validation'
    'Stateflow'
    'Statistical Graphics Toolbox'
    'Statistical Parametric Mapping'
    'Statistics Toolbox'
    'Symbolic Math Toolbox'
    'System Identification Toolbox'
    'SystemTest'
    'Wavelet Toolbox'

4voto

user1763518 Points 31

Il suffit de taper ver affiche la liste complète des boîtes à outils installées dans votre matlab.

2voto

Amro Points 72743

Un moyen rapide est de lister le contenu du répertoire toolboxes :

l = ls( toolboxdir('') )

En utilisant cette liste (à l'exception de quelques répertoires : shared,local), vous pouvez connaître la version installée d'une boîte à outils en utilisant ver :

v = ver('nnet')

à titre de référence, voici une liste des noms de répertoire des boîtes à outils que j'avais :

bioinfo 
curvefit
database
gads    
ident   
images  
nnet    
optim   
pde     
signal  
stats   
wavelet

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X