一个缺点VER功能是,它只是告诉你什么是安装,不是有一个可用许可证。可以安装工具箱,并且无需使用许可证(或者其他用户可以检出所有可用的许可证)。更好的选择是LICENSE函数,如您所指出的那样,每个工具箱都需要一个唯一的“特征字符串”。
有各种工具箱功能串上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'};
使用这个列表和功能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在下面评论中提到,这是一个坏主意,签出许可证willy-因为它们在你关闭MATLAB之前不会被释放。 你应该只检查你知道你将需要一个给定的应用程序的许可证!通常情况下,只有在尝试使用给定工具箱中的功能时,才会检出许可证。例如:
>> license('inuse')
matlab
>> gaussFilter = fspecial('gaussian'); %# An Image Processing Toolbox function
>> license('inuse')
image_toolbox
matlab
我想最好的方法是使用ver和license命令。这样,您可以通知用户他们是否完全没有工具箱,或者他们是否只需等待/尖叫,直到许可证可用。 – Jonas 2010-01-14 01:59:41
请注意,查看许可证只是为了查看许可证是否是一个**错误的事情,因为在MATLAB中,许可证不会在您完全关闭MATLAB之前发布。这与共享许可(特别是考虑到Mathworks对网络许可工具箱的低价格)不会“很好地发挥” – 2010-01-14 12:46:14
(但是,如果您需要在该功能中使用该工具箱,那么应该没问题) – 2010-01-14 12:47:22