Ответ 1
Один недостаток функции ver
заключается в том, что он сообщает только то, что установлено, а не то, что имеет доступную лицензию. Возможно установить инструментарий и не использовать лицензию (или все доступные лицензии могут быть проверены другими пользователями). Лучшим выбором является функция license
, которая (как вы указали) требует уникальной "строки функций" для каждого инструментария.
Здесь приведен более старый список строк функций для различных наборов инструментов, взятых из ныне не существующего потока новостей (ссылка теперь мертва):
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'};
Это охватывает многие из распространенных, но не является исчерпывающим и не включает строки функций для новых наборов инструментов. Кажется, что нет доступных легко доступных списков текущих строк функций для всех наборов инструментов MathWorks. Я считаю, что вы можете найти их в строке "INCREMENT" в файле лицензии или (как упоминается в комментарии в комментарии) вы можете вызвать функцию из заданного инструментария, а затем использовать license('inuse')
чтобы получить строку функции из отображаемый список используемых в данный момент панелей инструментов. Однако для обоих указанных выше параметров требуется уже имеющаяся лицензия.
Используя приведенный выше список строк функций и license
функции, вы можете проверить, какие панели инструментов у вас есть лицензия для использования. Следующий код проверяет лицензии для всего списка выше:
index = cellfun(@(f) license('test', f), featureStr);
availableFeatures = featureStr(logical(index));
Однако приведенное выше просто подтверждает, что лицензия существует, а не то, что ее можно проверить. Возможно, срок действия лицензии истек, или все доступные лицензии могут быть проверены другими пользователями. Чтобы быть абсолютно уверенным, что вы сможете использовать доступные панели инструментов, вы можете попробовать проверить лицензию на те, которые вам нужны, и проверить, были ли вы успешны. Следующий код пытается проверить лицензию для всех доступных наборов инструментов, найденных выше:
index = cellfun(@(f) license('checkout', f), availableFeatures);
checkedOutFeatures = availableFeatures(logical(index));
СЛОВО ПРЕДУПРЕЖДЕНИЯ !:
Как упоминает Jason S в комментарии ниже, это плохая идея проверить лицензии волей-неволей, так как они не будут выпущены до закрытия MATLAB. Вы должны только проверить лицензию, которая, как вам известно, вам понадобится для данного приложения! Обычно лицензии не проверяются до тех пор, пока вы не попытаетесь использовать функцию из данного инструментария. Например:
>> license('inuse')
matlab
>> gaussFilter = fspecial('gaussian'); % An Image Processing Toolbox function
>> license('inuse')
image_toolbox
matlab