sobol敏感性分析 matlab代码

2023-05-16

% 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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sobol敏感性分析 matlab代码 的相关文章

  • 如何选择部分密集数据集的均匀分布子集?

    P是一个 n d 矩阵 持有nd 维样本 P某些地区的密度是其他地区的几倍 我想选择一个子集P其中任意样本对之间的距离大于d0 并且我需要将其传播到整个区域 所有样本都具有相同的优先级 无需优化任何内容 例如覆盖面积或成对距离之和 这是执行
  • 将单元格转换为双精度

    gt gt C 1 2 CF 2 C 1 2 CF 2 gt gt whos C Name Size Bytes Class Attributes C 2x2 478 cell 我怎样才能转换C into double以便 gt gt C
  • matlab矩阵中求子矩阵的通用方法

    我正在寻找一种 好 方法来在更大的矩阵 任意维数 中找到矩阵 模式 Example total rand 3 4 5 sub total 2 3 1 3 3 4 现在我希望这样的事情发生 loc matrixFind total sub 在
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 使用 java 执行 Matlab 函数

    我正在编写一个应用程序 它使用 matlab 进行图像处理 然后使用 Java 接口显示结果 由于某些原因 我必须同时使用 Java 和 Matlab 如何在java中使用matlab函数 如何创建和访问界面 MATLAB控制 http m
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • Ilnumerics Ilpanel 在 winform 中编译成 dll 并加载到 matlab 时不激活

    我想将 Visual studio 2012 中用 C 编写的 winform 编译为 dll 然后将其加载到 matlab 2013a 中 然后 我想使用 matlab net 接口与 winform 进行交互 侦听其事件并通过一组预定义

随机推荐

  • scrapy并发爬虫

    通过CrawlerProcess import scrapy from scrapy crawler import CrawlerProcess class MySpider1 scrapy Spider Your first spider
  • pyqt5使用pyinstaller打包项目为exe

    一 打包 1 生成index spec pyinstaller F w i logo ico index py 不显示cmd pyinstaller F c i logo ico index py 建议先用 c xff0c 这样如果打包不成
  • freshclam更新clamav病毒库失败(connection failed)

    有大佬能帮帮我吗 xff1f
  • 查杀linux服务器木马,定时查杀病毒并隔离

    接收到了阿里云服务器的安全告警 xff0c 主要文件是 usr bin sshd root aa xff0c 使用以下三种方法解决 一 使用clamav 一 xff09 下载 下载方式 xff1a xff08 1 xff09 下载压缩文件
  • 外部传参的3种方式

    运行jar包时 xff0c 希望通过外部传参并获取 xff0c 框架为spring boot xff0c 有3种方式解决 前两种需要设置环境变量 spring boot 的 64 Value 64 Component public clas
  • 批量替换文件名为指定日期并删除.svn文件

    bin bash cur date 61 34 96 date 43 Y m d 96 34 cur date 61 2 批量替换该文件夹下的所有文件日期为指定日期 function replace name for file in 96
  • log4j2内置变量

    问题概述 xff1a 在log4j2 xml中中想通过 变量名 直接获取变量 xff0c 但是直接输出了 符 xff0c 并没有获取到项目中的变量 目录 一 log4j2官方配置 二 常见变量 1 bundle配置文件 2 sys系统变量
  • 构建Docker容器集群(九)

    Docker容器集群构建 使用自定义网桥连接跨主机容器 Docker默认的网桥是docker0 它只会在本机连接所有的容器 举例来说容器的虚拟网卡在主机上看一般叫做veth 而docker0网桥把所有这些网卡桥接在一起 xff0c 如下所示
  • ubuntu虚拟桌面

    用户可以自定义启动号码如 xff1a vncserver 2 注意 2前面一定要有空格 杀死vncserver进程 vncserver kill 1 这里你启动vncserver时是什么端口号要对应上 1 第一种方法 xff1a 使用geo
  • markdown编辑希腊字母

    字母名称大写markdown原文小写markdown原文alphaAA alphabetaBB betagamma Gamma gammadelta Delta deltaepsilonEE epsilon varepsilonzetaZZ
  • Linux下WRF Domain Wizard使用教程(PART2: 使用教程及 遇到的种种BUG)

    当用命令run DomainWizard打开WRFDW后 如图所示 第一步 第一栏是你的虚拟机的名称 第二栏是WPS所在的目录 第三行是WPS所需要的静态地理数据的位置 第四栏是你WRFDW项目存放的位置 这里我新创建了个domain 点击
  • Keras学习之tensor张量

    本文参考Keras中文官方网站 xff1a http keras cn readthedocs io en latest other regularizers tensor 张量 指的是指广泛的数据类型 xff0c 它是 n n 维的 n
  • 栈和排序

    题目描述 给你一个1 gt n的排列和一个栈 xff0c 入栈顺序给定 你要在不打乱入栈顺序的情况下 xff0c 对数组进行从大到小排序 当无法完全排序时 xff0c 请输出字典序最大的出栈序列 输入描述 第一行一个数n 第二行n个数 xf
  • ubuntu系统samba共享权限设置,一清二楚

    samba共享设置 在root权限下 xff0c 进入root权限的方法 su或者 sudo su root 创建系统用户 useradd m user 设置用户密码 passwd user 创建smb密码 smbpasswd a user
  • curl安装

    一 xff1a windows下安装curl 1 下载windows版本curl安装包 根据你电脑的系统选择32位或64位 因为我的电脑是64位的 所以我选择64位的安装包 curl下载地址 xff1a https curl haxx se
  • OAuth 2.0 概念及授权流程梳理

    本文可以转载 xff0c 但请注明出处https www cnblogs com hellxz p oauth2 process html OAuth2 的概念 OAuth是一个关于授权的开放网络标准 xff0c OAuth2是其2 0版本
  • 基于51单片机的12864液晶时钟C语言程序

    自己写的12864液晶时钟程序 xff0c 经过验证可以使用 xff0c 希望可以为初学者作为参考 include lt reg52 h gt include lt math h gt define uint unsigned int de
  • 耗时两个月开发的弯管机三维模型自动转档软件

    一 系统简介 SmartPipe软件根据用户提供的三维实体管子数据 xff08 stp iges brep文件 xff09 xff0c 通过全自动方式 xff0c 提取管子的轴线数据及几何特征信息 xff0c 生成弯管编程所需的xyz数据以
  • 软件评测-软件测试与软件质量

    软件测试与软件质量 软件测试 xff1a 经典的定义是在规定条件下对程序进行操作 xff0c 以发现错误 xff0c 对软件质量进行评估 因为软件是由文档 数据 及程序组成 xff0c 所以软件测试应该是对软件形成过程的文档 数据以及程序进
  • sobol敏感性分析 matlab代码

    sobol 参数敏感性分析 参考 xff1a csdn https blog csdn net xiaosebi1111 article details 46517409 wiki xff1a https en wikipedia org