Одним из недостатков функции 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));
СЛОВО ПРЕДУПРЕЖДЕНИЯ!:
Как упоминает Джейсон С. в комментарии ниже , это плохая идея, чтобы проверить лицензии, так как они не будут выпущены, пока вы не закроете MATLAB. Вы должны получить только ту лицензию, которая, как вам известно, понадобится для данного приложения! Обычно лицензии не извлекаются до тех пор, пока вы не попытаетесь использовать функцию из данного набора инструментов. Например:
>> license('inuse')
matlab
>> gaussFilter = fspecial('gaussian'); % An Image Processing Toolbox function
>> license('inuse')
image_toolbox
matlab