% sobol 参数敏感性分析

%参考:

% csdn : https://blog.csdn.net/xiaosebi1111/article/details/46517409

% wiki: https://en.wikipedia.org/wiki/Variance-based_sensitivity_analysis

%运行环境 matlab2016b

%% 初始化

clc;

clear all;

close all;

%% 设定:给定参数个数和各个参数的范围

D=3;% 维度3,几个参数

M=D*2;%

nPop=4;% 采样点个数,也就是参数水平数 ,取大了好,比如4000,但慢

VarMin=[0 0 0 ];%各个参数下限

VarMax=[1 1 1];%各个参数上限

%% 产生所需的各水平参数

VarMin=[VarMin,VarMin];

VarMax=[VarMax,VarMax];

p= sobolset(M);% https://www.cnblogs.com/zhubinglong/p/12260292.html

% R=p(1:nPop,:);% 我只用前nPop个

R=[];

for i=1:nPop

r=p(i,:);

r=VarMin+r.*(VarMax-VarMin);

R=[R; r];

end

% plot(R(:,1),'b*')

% 拆分为A B

A=R(:,1:D);% 每行代表一组参数,其中每列代表每组参数的一个参数;行数就代表共有几组参数

B=R(:,D+1:end);

% 根据A B 产生矩阵AB

AB=zeros(nPop,D,D);

for i=1:D

tempA=A;

tempA(:,i)=B(:,i);

AB(1:nPop,1:D,i)=tempA;

end

%% 求各参数解

YA=zeros(nPop,1);% 解

YB=zeros(nPop,1);

YAB=zeros(nPop,D);%分别代表YAB1,YAB2,YAB3,YAB(:,D)就代表YABD

for i=1:nPop

YA(i)=myfun(A(i,:));

YB(i)=myfun(B(i,:));

for j=1:D

YAB(i,j)=myfun(AB(i,:,j));

end

end

%% 根据一阶影响指数公式:

VarX=zeros(D,1);% S的分子

S=zeros(D,1);

% 0: 估算基于给定样本的方差(EXCEL var.p) ; 1:计算基于给定的样本总体的方差(EXCEL var.p())

% var([2.091363878 1.110366059 3.507651769 1.310950363 2.091363878 3.507651769 1.110366059 1.7066512],1);

VarY=var([YA;YB],1);% S的分母。 计算基于给定的样本总体的方差(EXCEL var.p())

for i=1:D

for j=1:nPop

VarX(i)=VarX(i)+YB(j)*(YAB(j,i)-YA(j));

end

VarX(i)=1/nPop*VarX(i);

S(i)=VarX(i)/VarY;

end

%% 总效应指数

EX=zeros(D,1);

ST=zeros(D,1);

for i=1:D

for j=1:nPop

EX(i)=EX(i)+(YA(j)-YAB(j,i))^2;

end

EX(i)=1/(2*nPop)* EX(i);

ST(i)=EX(i)/VarY;

end

disp('一阶影响指数:S');

disp(S);

disp('总效应指数:ST');

disp(ST);

disp('success!');

%% 子函数 matlab2016之前不支持子函数写在同一个m文档中

function y=myfun(x)

y=sin(x(1))+7*(sin(x(2)))^2+0.1*x(3)^4*sin(x(1));

end

matlab敏感性分析代码,sobol敏感性分析 matlab代码相关推荐

  1. matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...

    这些错误意味着您试图运行的R代码或源代码在语法上是不正确的.也就是说,你有一个错误. 若要修复此问题,请仔细阅读错误消息.错误消息中提供的代码显示了R认为问题所在的地方.在原始代码中找到这一行,并查找 ...

  2. matlab代码重改python代码,对应函数

    (2021)matlab代码重改python代码,对应函数--全!_Troublemaker丶的博客-CSDN博客

  3. matlab 高斯迭代代码_用Matlab编写你的第一个有限元_《数值计算与程序设计》系列课程...

    本课主要分析了有限元的基本理论, 不同于其他学习资料的是本文从数学的角度重新阐述了有限元分析的基本步骤,如通解与特解的讲解,并以一个偏微分方程实例,从基础插值出发,详细地讲解了有限元数学推导的每一步过 ...

  4. 基于IMAGE法的房间回响模型创建、C++代码实现、matlab仿真

    基于IMAGE法的房间回响模型创建.C++代码实现.matlab仿真 1.模型简介 \qquad在处理声音信号时,我们要对信号先进行采集.那么我们就必须要有,一个发出声音的声源,一个进行声音采集的传感 ...

  5. matlab 生成信号文件,生成的代码如何存储内部信号、状态和参数数据

    浏览模型示例 打开模型示例 rtwdemo_roll. open_system('rtwdemo_roll') 该模型包含不连接到根级别 Inport 或 Outport 模块的内部信号.某些信号具有 ...

  6. bp神经网络matlab代码_基于Matlab的BP神经网络识别26个英文字母

    一.设计思想 字符识别在现代日常生活的应用越来越广泛,比如车辆牌照自动识别系统,手写识别系统,办公自动化等等.本文采用BP网络对26个英文字母进行识别.首先将待识别的26个字母中的每一个字母都通过长和 ...

  7. 彩色matlab代码拷贝到word研究,matlab编辑器合并_彩色MATLAB代码拷贝到WORD研究

    公众号:理念世界的影子 文不可无观点,观点不可无论据. 转载请注明出处 结果简单,重在过程 有时将彩色Matlab代码拷贝到Word中,可能出现彩色消失.中文乱码.没有行号.字体不佳等问题.已有的措施 ...

  8. SiamFC代码配置复现 matlab版本

    原创 SiamFC代码配置复现 2019-04-29 22:18:06 ZZXin_ 阅读数 1603更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

  9. MATLAB的超效率SBM-DEA模型代码 可以做期望产出和非期望产出的超效率和非超效率sbm模型和Malmquist指数和分解

    MATLAB的超效率SBM-DEA模型代码(有安装教程和内容讲解之类的东西),操作很简单 可以做期望产出和非期望产出的超效率和非超效率sbm模型和Malmquist指数和分解 ID:669695527 ...

最新文章

  1. Microbiome: 绝对定量环境样本细菌、真菌、真核群落丰度
  2. 计算机系统—CPU结构和内部工作
  3. OSI模型和TCP/IP模型
  4. OpenGL 投光物Light casters
  5. Linux-重装系统之静态ip配置
  6. python升级pip_新手求助, python 升级 pip 失败
  7. C#学习笔记(十八):数据结构和泛型
  8. 【图像处理基础】基于matlab GUI图像局部放大【含Matlab源码 1016期】
  9. php rrd 做统计数据,Ganlia采样、统计及RRD记录周期(频次、间隔)的配置和更改...
  10. linux mysql ip_Linux下配置mysql允许指定IP远程访问
  11. 报错:Unhandled exception
  12. Asia/Shanghai与GMT-8的区别
  13. STAF 删除文件操作
  14. 软件集成:Simulink与STM32联合开发
  15. 减肥期间早餐或者晚餐吃馒头包子可以吗?
  16. Python实现 宽度/广度优先搜索算法, 深度优先搜索算法
  17. abb机器人负载配置设定_ABB机器人【 配置设定】大全 , 人手一份,建议永久收藏!...
  18. 设计一个Shape接口和它的两个实现类Square和Circle
  19. e控智慧管家免责声明
  20. Relative Positional Encodings

热门文章

  1. 情绪的自我调节与控制
  2. 计算机仿真技术(2)
  3. 暑假小学期安卓开发笔记1——设计思路
  4. commons-math3-3.6.1-org.apache.commons.math3.analysis.differentiation-包下的接口-中英对照文档及源码赏析
  5. 微信公众号获取事件监听
  6. Mac安装tableau报错:无法启动/内部授权错误
  7. DevExpress WPF的电子表格组件,让您更快获得Excel体验(一)
  8. java 工厂类静态方法,为什么要在JAVA工厂模式中使用静态方法
  9. python如何爬虫eps数据_Python爬虫如何通过post获取网站的数据?
  10. 右键计算机管理显示目录名称无效,电脑资源管理器的右键上下文菜单打不开的两种解决办法...