Как можно было бы проверить на установленные панели инструментов MATLAB на сценарии/функции?

Как можно было бы проверить на установленные панели инструментов MATLAB на сценарии/функции? (проверка версий панели инструментов также была бы хороша!) Это могло предоставить быстрое и полезное сообщение об ошибке, когда кто-то пытается запустить скрипт без необходимой панели инструментов.

Быстрое, хотя грубо, решение, которое приходит на ум, анализирует текстовый вывод ver команда. Интересно, существует ли лучший путь.

Некоторый быстрый поиск показан ver product или license функция с 'test' аргумент может быть полезным, но я не мог найти отображение имен панели инструментов (т.е. 'Image Processing Toolbox') к названиям продукта (т.е. 'control') или имена функции (т.е. image_toolbox).

Кроме того, когда я работал license('inuse'), Я только получил следующее:

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

a = 

    feature: 'matlab'
       user: 

Я надеялся на список многих панелей инструментов, к которым у меня есть доступ.

Этот вопрос был запрошен путем попытки протестировать сценарий коллег рано. К сожалению, это потребовало Панели инструментов Обработки изображений, в которой я в настоящее время испытываю недостаток. Полезное сообщение об ошибке сэкономило бы время, пытаясь диагностировать проблему. Теперь я буду ожидать скомпилированной версии прежде, чем протестировать его.

34
задан Amro 14 November 2011 в 15:25
поделиться

3 ответа

Один недостаток в функцию Ver состоит в том, что она говорит вам только, что устанавливается , а не то, что имеет доступную лицензию . Можно установить набор инструментов и без лицензии на его использование (или все доступные лицензии могут быть проверены другими пользователями). Лучшим выбором является функцией лицензии , которая (как вы указали), требуется уникальный «Функция» для каждого панели инструментов.

Вот более старый список функций строк для различных инструментов, взятых из New-Restounce NewsGroup Thret (Ссылка теперь мертва):

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. Я считаю, что вы можете найти их в строках «приращения» в файле лицензии или ( как Vlee упоминается в комментарии ), вы можете вызвать функцию из заданного Toolbox, а затем использовать лицензию inuse ') Чтобы получить строку функции из отображаемого списка используемых в настоящее время инструментов. Однако оба из приведенных выше вариантов уже требуют доступной лицензии.

Используя вышеуказанный список функций строк и лицензии функции , вы можете проверить, какие набора инструментов у вас есть лицензия на использование. Следующие проверки кода для лицензий для всего списка выше:

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

Однако вышеизложенное только подтверждает, что лицензия существует , не то, что она может быть . . Лицензия могла бы истекать или все имеющиеся лицензии могут быть проверены другими пользователями. Чтобы быть абсолютно уверенным, что вы сможете использовать доступные наборы инструментов, вы действительно можете попробовать проверить лицензию для тех, которые вам нужны, и тестируйте, чтобы увидеть, были ли вы успешно. Следующий код пытается проверить лицензию для всех доступных наборов инструментов, найденных выше:

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

Слово предупреждения!:

Как упоминает Джейсон в комментарии ниже , это плохое представление о проверке лицензии Willy- Nilly, так как они не будут выпущены, пока не закроете Matlab. Вы должны проверить только лицензию, которую вы знаете, вам понадобится данное приложение! Обычно лицензии не проверяются, пока не пытаетесь использовать функцию из заданного Toolbox. Например:

>> license('inuse')
matlab
>> gaussFilter = fspecial('gaussian');  % An Image Processing Toolbox function
>> license('inuse')
image_toolbox
matlab
27
ответ дан 27 November 2019 в 16:57
поделиться

быстрый способ - перечислить содержимое каталога инструментальных ящиков:

l = ls( toolboxdir('') )

используя этот список (исключая несколько каталогов: shared,local), вы можете узнать версию установленного инструментального ящика используя ver:

v = ver('nnet')

в качестве ссылки, вот список имен каталогов инструментальных ящиков, который у меня был:

bioinfo 
curvefit
database
gads    
ident   
images  
nnet    
optim   
pde     
signal  
stats   
wavelet 
2
ответ дан 27 November 2019 в 16:57
поделиться

Ver Кажется, как путь к работе, а разбор не должен быть так сложно. Посмотрим:

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));

кстати, если вам нужно проверить наличие версий, Verrelessthan - ваш друг.

11
ответ дан 27 November 2019 в 16:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: