一個缺點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