敏感性分析 sobol matlab 代码

敏感性分析 sobol matlab 代码

start之前是写出 sobol 序列,后面直接运行就行, 如有错误请指正 ,谢谢。
下面展示一些 内联代码片

// A code block
% 样本数为4(N = 4),自变量数目为3(D = 3)。 
% 1、 生成N * 2D(即4行6列)的样本矩阵。这个就是我们Sobol sequence做的事情。这边我们生成的矩阵为:
clc;
clear all;
close all;
M=2*3;% 维度,几个参数
nPop=5;% 样本数为4
VarMin=[0,  0 ,  0.0, 0,   0 ,   0.0];%各个参数下限
VarMax=[1.0, 1.0, 1.0,1.0,   1.0, 1.0];%各个参数上限
p = sobolset(M);
% R=p(1:nPop,:);% 我只用前nPop个
R=[];
for i=1:nPop
    r=p(i,:);
    r=VarMin+r.*(VarMax-VarMin);
    R=[R; r];
end
plot(R(:,2),'b*');

R2=R(2:5,:);
%===============================start ===========
R22=[0.5 0.5 0.5 0.5 0.5 0.5;
     0.75 0.25 0.25 0.25 0.75 0.75;
     0.25 0.75 0.75 0.75 0.25 0.25
     0.375 0.375 0.625 0.875 0.375 0.125];
A=R22( : ,1:3);
B=R22( : ,end-2:end);
%---------------------------
A1=A; % 记录A B 初始值的中间变量
B1=B;
A(: ,1 )=B(: ,1 );
AB_1=A ;
%---------------------------
A=A1;
B=B1;
A(: ,2 )=B(: ,2 );
AB_2=A ;
%---------------------------
A=A1;
B=B1;
A(: ,3 )=B(: ,3 );
AB_3=A ;


% (D + 2) * N (即20)组x1、x2、x3输入数据,因此我们将有20组Y值。
% 样本数为4(N = 4),自变量数目为3(D = 3)。 
% 构造了A、B、AB1、AB2、AB3这五个矩阵
syms x1 x2 x3 Y
% Y=sin(x1)+7*sin(x2)^2+0.1*x3^4*sin(x1);
for i=1:4
x11=A1(i,1);x12=A1(i,2);x13=A1(i,3);
YA(i)=sin(x11)+7*sin(x12)^2+0.1*x13^4*sin(x11);
end
for i=1:4
x11=B1(i,1);x12=B1(i,2);x13=B1(i,3);
YB(i)=sin(x11)+7*sin(x12)^2+0.1*x13^4*sin(x11);
end
for i=1:4
x11=AB_1(i,1);x12=AB_1(i,2);x13=AB_1(i,3);
YAB1(i)=sin(x11)+7*sin(x12)^2+0.1*x13^4*sin(x11);
end
for i=1:4
x11=AB_2(i,1);x12=AB_2(i,2);x13=AB_2(i,3);
YAB2(i)=sin(x11)+7*sin(x12)^2+0.1*x13^4*sin(x11);
end
for i=1:4
x11=AB_3(i,1);x12=AB_3(i,2);x13=AB_3(i,3);
YAB3(i)=sin(x11)+7*sin(x12)^2+0.1*x13^4*sin(x11);
end
syms Mean_Y
Y=zeros(8,1);
Y(1:4,:)=YA';
Y(5:8,:)=YB';
Mean_Y=mean(Y);
Var_Y=var(Y);
%---------------------
% 4、 根据一介影响指数公式:==================
YAj=YA;
YBj=YB;
YAB1j=YAB1;
YAB2j=YAB2;
YAB3j=YAB3;
Varx1=0;
for i=1:4
Varx1=Varx1+YBj(i)*(YAB1j(i)-YAj(i));
Varx1
end

Varx1=Varx1/4;
s1=Varx1/Var_Y;

 % ————————————————
 % 原文链接:https://blog.csdn.net/xiaosebi1111/article/details/46517409

Varx2=0;
for i=1:4
Varx2=Varx2+YBj(i)*(YAB2j(i)-YAj(i));
Varx2
end

Varx2=Varx2/4;
s2=Varx2/Var_Y;
%--------------------
Varx3=0;
for i=1:4
Varx3=Varx3+YBj(i)*(YAB3j(i)-YAj(i));
Varx3
end

Varx3=Varx3/4;
s3=Varx3/Var_Y;
%--------------
%--------------------the following 全局影响指数==================
Ex_1=0;
for i=1:4
Ex_1=Ex_1+(YAB1j(i)-YAj(i))^2;
Ex_1
end

Ex_1=Ex_1/(2*4);
st1=Ex_1/Var_Y;
%--------------
%========================
Ex_2=0;
for i=1:4
Ex_2=Ex_2+(YAB2j(i)-YAj(i))^2;
Ex_2
end

Ex_2=Ex_2/(2*4);
st2=Ex_2/Var_Y;
%--------------
%========================

Ex_3=0;
for i=1:4
Ex_3=Ex_3+(YAB3j(i)-YAj(i))^2;
Ex_3
end

Ex_3=Ex_3/(2*4);
st3=Ex_3/Var_Y;






参考链接: link

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值