【Matlab】Sobol灵敏度分析

计算一阶灵敏度与总灵敏度

参考链接
代码如下:
因为随机抽样,每次计算结果都不同

主函数

% function main
clc
clear
close all
%% 参数设置
n_p = 4;  % 待分析参数数目
n_base= 2000; % 参数样本数目
N = n_base*(n_p*2+1); % 模型/函数运行总次数
% 设置参数上下限,此处1<x1<1000,10<x2<100,1<x3<10,0<x4<2*pi
datamin=[1,10,1,0];%所有参数的下线
datamax=[1000,100,10,2*pi];%所有参数的上限
PS=PS_generate(n_base,n_p,datamin,datamax);% 参数样本空间(一)
comp_PS=PS_generate(n_base,n_p,datamin,datamax);% 参数样本空间(二),用于Monte Carlo采样
%% Sobol主程序
[Sob_1,Sob_t]=Sobol_cal(n_p,n_base,PS,comp_PS);
disp(Sob_1); %一阶灵敏度
disp(Sob_t); %总灵敏度
%负值或总和大于1为截断误差、非线性模型等因素造成

Sobol_obj.m

%% 样例函数
function out=Sobol_obj(kp)
% a function that works with the trial Sobol Method program
% the trial function is fx: x1+5*x2*x3^2;
x1=kp(1);
x2=kp(2);
x3=kp(3);
x4=kp(4);
out= x1+ x2*x3^2+sin(x4);
end

PS_generate.m

function PS=PS_generate(n_base,n_p,datamin,datamax)
PS=zeros(n_base,n_p);
for i=1:n_pPS(:,i)=ceil((datamin(i) + datamax(i).*rand(n_base,1)));
end

Sobol_cal.m

function [Sob_1,Sob_t]=Sobol_cal(n_p,n_base,PS,comp_PS)
% 计算模型输出
t=0;
for i=1:n_baset=t+1;kp(t,:)=PS(i,:);output(i,:)=Sobol_obj(kp(t,:)); %代入目标函数/模型计算for j=1:n_pt=t+1;kp(t,:)=[comp_PS(i,1:j-1),PS(i,j),comp_PS(i,j+1:n_p)]; % 构造Sobol抽样c_out_1(i,:,j)=Sobol_obj(kp(t,:)); %代入目标函数/模型计算t=t+1;kp(t,:) = [PS(i,1:j-1),comp_PS(i,j),PS(i,j+1:n_p)]; % 构造Sobol抽样c_out_t(i,:,j)=Sobol_obj(kp(t,:)); %代入目标函数/模型计算end
end
% t=N here;
%蒙特卡洛积分
n_out = size(output,2); 
f0 = zeros(1,n_out); 
D=zeros(1,n_out);  for i = 1:n_basef0 = f0+output(i,:)/n_base; % 模型积分D = D+output(i,:).^2/n_base; % 计算模型输出方差
endD=D-f0.^2; %模型输出方差
Dj=ones(n_p,1)*D;  
Dtotj=zeros(n_p,1); 
for i = 1:n_basefor j = 1:n_pDj(j,:)=Dj(j,:)-(output(i,:)-c_out_1(i,:,j)).^2/(2*n_base); %计算偏方差Dtotj(j,:)=Dtotj(j,:)+(output(i,:)-c_out_t(i,:,j)).^2/(2*n_base); %计算参数j的总方差end
end
%计算敏感度
Sob_1 = Dj./(ones(n_p,1)*D); %first order effect 一阶敏感度
Sob_t = Dtotj./(ones(n_p,1)*D); % total effect 总敏感度

注:一阶灵敏度与总灵敏度
(1)
一阶影响指数:显示由各个输入变量的方差产生的因变量的方差,根据一阶影响指数可以量化单个变量对模型的敏感程度
总效应指数:显示由每个输入变量的方差及其与其他输入变量的相互作用而产生的因变量的方差。
(2)
一阶影响指数:度量单个模型输入对输出方差的贡献
总阶影响指数:度量模型输入对输出方差的贡献,包括一阶与更高阶
(3)
一阶敏感指数表示单参数对模型输出方差的贡献率。
高阶敏感指数表示多个参数耦合效应对模型输出方差的贡献率。
全局敏感度指数:全局敏感度度量在修改一个元组时查询结果的最大变化,只与查询函数相关,并且独立于数据集本身。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么在本地debug使用idea计算对象内存

在工作的过程中&#xff0c;我们遇到一个觉得比较大的对象的时候&#xff0c;经常需要判断一个对象大小&#xff0c;以此来决定是将数据放在内存还是缓存来提升性能&#xff0c;我看到现在很多文章介绍的要么是不完善&#xff0c;要么是不够准确&#xff0c;因此打算自己写一篇…

java学习路线图(全面)

以下是详细的Java学习路线图&#xff0c;涵盖了从基础到高级的必备技能和知识。 基础知识 Java基础&#xff1a;学习Java的基本语法、数据类型、控制流程语句、数组、异常处理等。面向对象编程&#xff1a;深入理解类和对象、继承、多态、封装、接口和抽象类的概念。 工具和环…

API接口开发分享:API接口接入拼多多平台采集商品详情实时数据、获取商品销量、价格、库存、名称等数据,免费接入key获取示例

要接入拼多多平台的API接口采集商品详情数据、商品销量、价格、库存、名称等数据&#xff0c;首先需要注册一个API账号。用来请求调用该api。 接下来&#xff0c;你可以使用Python等编程语言调用拼多多的API接口。以下是一个使用Python调用拼多多API接口的示例&#xff1a; i…

K8S 哲学 - yaml文件

selector&#xff1a; Pod 对象不应该有 selector 字段。selector 字段通常用于 Service、Deployment、ReplicaSet 等对象&#xff0c;用于选择匹配的 Pod。在 Pod 对象中&#xff0c;这个字段是无效的 apiVersion: apps/v1 kind: Deployment metadata: name: gyk labels: …

48-PCIE转串口和并口电路设计

视频链接 PCIE转串口和并口电路设计01_哔哩哔哩_bilibili PCIe转串口和并口电路设计 1、PCIe转串并口电路设计基本介绍 2、PCIe转串口和并口的方案(京东) 2.1、PCIe转串口 2.1.1、ASIX (亚信)MCS9922-PCIe转2路RS232扩展卡 2.1.2、ASIX (亚信)MCS9900-PCIe转4路RS232扩展卡…

【数据结构与算法】力扣 344. 反转字符串

题目描述 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a; 输入&#xff1a; s ["…

46、二叉树-二叉树展开为链表

思路&#xff1a; 方法一 1、使用先序遍历每个节点 放入集合中&#xff0c;然后遍历集合&#xff0c;左子树为null&#xff0c;右子树为下一个节点。代码如下&#xff1a; public void flatten(TreeNode root) {if (rootnull){return;}LinkedList<TreeNode> list new …

深入理解高并发超卖一系列问题与解决方案(近7万字详解,跳槽涨薪必备宝藏珍藏级分享)

破除困境带你飞 能遇上高并发的&#xff0c;基本都是有点规模的公司&#xff0c;小公司基本都是CRUD。 想去一线城市跳槽&#xff0c;想去有高并发的公司&#xff0c;但是没有高并发经验&#xff0c;没有高并发的经验&#xff0c;就去不了高并发的公司&#xff0c;去不了这样的…

什么是bs架构和cs架构

bs架构是在浏览器就能访问到的系统&#xff0c;不需要用户去更新和安装app cs架构是需要下载一个app客户端&#xff0c;每次升级都需要更新app

mysql面试题五(事务)

目录 1.mysql有哪些锁及作用 1. 行锁&#xff08;Row Locks&#xff09; 2. 间隙锁&#xff08;Gap Locks&#xff09; 3. Next-Key Locks 4. 意向锁&#xff08;Intention Locks&#xff09; 5. 表锁&#xff08;Table Locks&#xff09; 6. 元数据锁&#xff08;Metad…

【Java基础】19.继承(面向对象的三大特征:封装、继承、多态)

文章目录 前言一、继承的概念二、继承的步骤1.类的继承格式2.继承的实例3.继承类型 三、继承的特性四、继承的关键字1.extends关键字2.implements关键字3.super 与 this 关键字4.final 关键字 五、构造器 前言 一、继承的概念 继承是java面向对象编程技术的一块基石&#xff…

python 3种算法 回溯法、字典序生成、递归交换 实现全排列【力扣46题】

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

webpack 打包优化 - splitChunks

打包时会遇到的问题&#xff1a; 打包文件过大&#xff0c;首屏加载时间过长&#xff0c;js阻塞页面渲染导致白屏改动业务代码后&#xff0c;对于第三方库也会一并重新打包到一个出口文件&#xff0c;浏览器无法利用缓存来减少请求和加载的时间 针对以上两个问题&#xff0c;…

适合生产制造企业用的ERP系统有哪些?

适合生产制造企业用的ERP系统有哪些&#xff1f; 想选择适合生产制造企业的ERP&#xff0c;首先了解市面上有哪些ERP系统 市面上的ERP系统主要分为三大类&#xff1a; 1、垂直领域的ERP系统&#xff1a;这些系统是针对特定行业或垂直市场定制的ERP解决方案&#xff0c;通常具…

功能测试前景揭秘:会被淘汰吗?

在当今快速发展的信息时代&#xff0c;软件已经成为我们工作、学习乃至生活中不可或缺的一部分。随着技术的不断进步和应用的广泛普及&#xff0c;软件测试作为保障软件质量和功能实现的关键步骤&#xff0c;其职业发展路径也受到了广泛的关注。特别是针对功能测试这一细分领域…

我与C++的爱恋:隐式类型转换

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 朋友们大家好&#xff0c;本篇内容我们来介绍初始化列表&#xff0c;隐式类型转换以及explicit的内容 一、初始化列表 1.1 构造函数体赋值 在创建对象时&#xff0c;编译器…

说说redis的数据类型

1.字符串&#xff08;String&#xff09;&#xff1a;其存储二进制的数据&#xff0c;对数据可以进行原子性的增加或者减少操作 2.List&#xff08;列表&#xff09;&#xff1a;按照插入顺序进行排序&#xff0c;可以进行元素的重复&#xff0c;可以对列表的两端进行插入或者删…

etcd campaign

1. 引言 本文主要讲解使用etcd进行选举的流程&#xff0c;以及对应的缺陷和使用场景 2. etcd选举流程 流程如以代码所示&#xff0c;流程为&#xff1a; clientv3.New 创建client与etcd server建立连接 concurrency.NewSession 创建选举的session&#xff0c;一般会配置ses…

java:Java中的接口

什么是接口 概念&#xff1a; 官方解释&#xff1a;Java接口是一系列方法的声明&#xff0c;是一些方法特征的集合&#xff0c;一个接口只有方法的特征没有方法的实现&#xff0c;因此这些方法可以在不同的地方被不同的类实现&#xff0c;而这些实现可以具有不同的行为&#x…

Java Maven项目推送到 Maven 中央仓库

准备阶段 namespace 域名认证 当需要在 sonatype 认证 com.xxx命名空间时&#xff0c;需要将 .xxx.com 配置域名解析。 记录类型&#xff1a;TXT 文本内容&#xff1a;验证的 key。 GPG 公私钥生成 GPG 下载地址&#xff1a;https://www.gnupg.org/download/index.html M…