ver 函数的一个缺点是它只告诉您已安装 的内容,而不是可用的许可证。可能安装了一个工具箱但没有使用它的许可证(或者所有可用的许可证都可以被其他用户签出)。更好的选择是 license 函数,(正如您所指出的)每个工具箱都需要一个唯一的 "feature string"。
以下是从现已失效的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'};
这涵盖了许多常见的,但并不详尽,也不包括新工具箱的功能字符串。对于所有 MathWorks 工具箱,似乎没有任何现成的当前特征字符串列表。我相信您可以在许可证文件的“INCREMENT”行中找到它们,或者(as vlee mentions in a comment)您可以从给定工具箱中调用一个函数,然后使用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));
警告!:
As Jason S mentions in a comment below,随便检查许可证是个坏主意,因为在您关闭 MATLAB 之前它们不会被释放。 您应该只签出您知道给定应用程序需要的许可证! 通常,在您尝试使用给定工具箱中的功能之前,不会签出许可证。例如:
>> license('inuse')
matlab
>> gaussFilter = fspecial('gaussian'); % An Image Processing Toolbox function
>> license('inuse')
image_toolbox
matlab