Jedną wadą funkcji VER jest to, że tylko mówi, co zainstalowany, co nie ma dostępną licencję. Możliwe jest zainstalowanie zestawu narzędzi i brak licencji na jego używanie (lub wszystkie dostępne licencje mogą być wyrejestrowane przez innych użytkowników). Lepszym wyborem jest funkcja LICENSE, która (jak wskazano) wymaga unikalnego "łańcucha znaków" dla każdego zestawu narzędzi.
Jest lista ciągów fabularnych dla różnych przyborniki na this newsgroup thread:
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'};
Korzystanie z tej listy i funkcji LICENSE, można sprawdzić, które przyborniki masz licencję na użytkowanie.Poniższe kod sprawdza o licencje na całej listy powyżej:
index = cellfun(@(f) license('test',f),featureStr);
availableFeatures = featureStr(logical(index));
Jednak wyżej tylko potwierdza, że licencja istnieje, że nie może to być wyrejestrowany. Licencja mogła wygasnąć lub wszystkie dostępne licencje mogły zostać wyewidencjonowane przez innych użytkowników. Aby mieć całkowitą pewność, że będziesz mógł korzystać z dostępnych zestawów narzędzi, możesz spróbować wykupić licencję na te, których potrzebujesz i przetestować, aby sprawdzić, czy odniosłeś sukces. Poniższy kod próbuje sprawdzić licencję na wszystkich dostępnych przyborniki znajdując powyżej:
index = cellfun(@(f) license('checkout',f),availableFeatures);
checkedOutFeatures = availableFeatures(logical(index));
UWAGA:
Jak Jason S wspomina w komentarzu poniżej, że to zły pomysł, aby sprawdzić licencje willy- nilly, ponieważ nie będą one dostępne, dopóki nie zamkniesz MATLAB. Powinieneś tylko sprawdzić licencję, o której wiesz, że będziesz potrzebować dla danej aplikacji! Zwykle licencje nie są sprawdzane, dopóki nie spróbujesz użyć funkcji z danego zestawu narzędzi. Na przykład:
>> license('inuse')
matlab
>> gaussFilter = fspecial('gaussian'); %# An Image Processing Toolbox function
>> license('inuse')
image_toolbox
matlab
Myślę, że najlepszą metodą byłoby użycie zarówno polecenia ver, jak i licencji. W ten sposób możesz poinformować użytkownika, czy w ogóle nie ma w nim zestawu narzędzi, czy po prostu trzeba czekać/krzyczeć, aż licencja stanie się dostępna. – Jonas
Pamiętaj, że wykupienie licencji tylko w celu sprawdzenia, czy możesz wykupić licencję, jest złym **, ponieważ w MATLAB licencja nie zostanie wydana i nie będzie mogła zostać wydana, dopóki całkowicie nie zamkniesz MATLAB. To nie "ładnie gra" z udostępnionymi licencjami (zwłaszcza biorąc pod uwagę słabe ceny Mathworks dla skrzynek narzędziowych licencji sieciowych) –
(jednak jeśli chcesz używać tego zestawu narzędzi mimo wszystko w funkcji powinno być dobrze) –