• 大小: 2.10KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-03-28
  • 语言: Matlab
  • 标签: matlab  

资源简介


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); % 模型/函数运行总次数

% 设置参数上下限,此处1PS=[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)]; % 

评论

共有 条评论