資源簡介
Sobol全局敏感性分析Matlab代碼,輸出一階敏感度Sol_1及總敏感度Sol_t。 對簡單函數來說,自己仿照構造一個目標函數Sobol_obj即可; 如果分析對象是Matlab外部的模型,其實就不需要Sobol_obj了,代碼中的kp就是模型參數值,output、c_out_1和c_out_2就是kp代入模型算出來的模型輸出,用實際數據替換一下就行了。 本程序參考文獻:Bilal, N. (2014). Implementation of Sobol's Method of Global Sensitivity Analysis to a Compressor Simulation
代碼片段和文件信息
%%?Sobol主程序
%樣例目標函數Sobol_obj:?y=x1+?x2*x3^2,可自行更改
%若用于復雜模型,kp為全樣本空間,將kp代入模型計算,根據輸入和輸出構造函數Sobol_obj。
clear?all;?close?all;?clc;
n_p?=?3;??%?待分析參數數目
PS=[];?%?參數樣本空間(一)
comp_PS=[];?%?參數樣本空間(二),用于Monte?Carlo采樣
n_base=?1000;?%?參數樣本數目
N?=?n_base*(n_p*2+1);?%?模型/函數運行總次數
%?設置參數上下限,此處1 PS=[ceil((1?+?1000.*rand(n_base1)))?ceil((10?+?90.*rand(n_base1)))?ceil((1+?10.*rand(n_base1)))];?%?對參數隨機抽樣
comp_PS=[ceil((1?+?1000.*rand(n_base1)))?ceil((10?+?90.*rand(n_base1)))?ceil((1?+?10.*rand(n_base1)))];?%?對參數隨機抽樣
output=[];
c_out_1=[];
c_out_t=[];
%?計算模型輸出
t=0;
for?i=1:n_base
???t=t+1;
???kp(t:)=PS(i:);
???output(i:)=Sobol_obj(kp(t:));?%代入目標函數/模型計算
???for?j=1:n_p
??????t=t+1;
??????kp(t:)=[comp_PS(i1:j-1)PS(ij)comp_PS(ij+1:n_p)];?%?構造Sobol抽樣
??????c_out_1(i:j)=Sobol_obj(kp(t:));?%代入目標函數/模型計算
????
??????t=t+1;
??????kp(t:)?=?[PS(i1:j-1)comp_PS(ij)PS(ij+1:n_p)];?%?
- 上一篇:matlab中LS_SVMlab工具箱
- 下一篇:MATLAB小波三級分解圖像
評論
共有 條評論