信息扩散原理及实现(Matlab)

2023-10-30

信息扩散方法是为了弥补信息不足而考虑优化利用样本模糊信息的一种对样本进行集值化的模糊数学处理方法。最原始的形式是信息分配方法;最简单的信息扩散函数是正态扩散函数。信息扩散方法可以将一个分明值的样本点,变成一个模糊集。或者说,是把单值样本点,变成集值样本点。

信息扩散原理:
已知论域 U U U
U = { u 1 , u 2 , . . . , u m } U= \left\{ u_1, u_2, ..., u_m \right\} U={u1,u2,...,um}

一个单值观测样本点 x x x f ( u j ) = 1 h 2 π e − ( x − u j ) 2 2 h 2 f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}} f(uj)=h2π 1e2h2(xuj)2可以将其所携带的信息扩散给 U U U 中的所有点。

f ( u j ) = 1 h 2 π e − ( x − u j ) 2 2 h 2 f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}} f(uj)=h2π 1e2h2(xuj)2 中, h h h 为扩散系数,可根据样本中的最大值 b b b 和最小值 a a a 及样本点个数 n n n 来确定。

s = max ⁡ 1 ≤ j ≤ m { f ( u j ) } s=\max_{1\leq j \leq m} \left\{ f(u_j)\right\} s=1jmmax{f(uj)}


μ x ( u j ) = f ( u j ) s \mu_x(u_j)=\frac{f(u_j)}{s} μx(uj)=sf(uj)

就将单值样本点 x x x 变成 μ x ( u j ) \mu_x(u_j) μx(uj) 为隶属函数的模糊子集 χ \chi χ
在进行风险评估时,为了使每一个集值样本点的地位均相同,需对 s = max ⁡ 1 ≤ j ≤ m { f ( u j ) } s=\max_{1\leq j \leq m} \left\{ f(u_j)\right\} s=1jmmax{f(uj)}作适当的调整,所得的模糊子集也不再是 μ x ( u j ) = f ( u j ) s \mu_x(u_j)=\frac{f(u_j)}{s} μx(uj)=sf(uj)中的最大隶属度为 1 1 1 的正规化模糊子集。
设对第 i i i 个样本点 x i x_i xi 按照 f ( u j ) = 1 h 2 π e − ( x − u j ) 2 2 h 2 f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}} f(uj)=h2π 1e2h2(xuj)2进行扩散,得
f i ( u j ) = 1 h 2 π e − ( x − u j ) 2 2 h 2 f_i(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}} fi(uj)=h2π 1e2h2(xuj)2


C i = ∑ j = 1 m f i ( u j ) C_i=\sum_{j=1}^m f_i(u_j) Ci=j=1mfi(uj)

相应的模糊子集的隶属函数是
μ x ( u j ) = f i ( u j ) C i \mu_x(u_j)=\frac{f_i(u_j)}{C_i} μx(uj)=Cifi(uj)

μ x ( u j ) \mu_x(u_j) μx(uj) 为样本点 x i x_i xi 的归一化信息分布。

q ( u j ) = ∑ i = 1 n μ x i ( u j ) q(u_j)=\sum_{i=1}^n \mu_{x_i}(u_j) q(uj)=i=1nμxi(uj)

再令
Q = ∑ j = 1 m q ( u j ) Q=\sum_{j=1}^m q(u_j) Q=j=1mq(uj)

Q Q Q 事实上就是各 u j u_j uj 点上样本点数的总和,从理论上讲,必有 Q = n Q=n Q=n(计算中可能存在一些误差)。
p ( u j ) = q ( u j ) Q p(u_j)=\frac{q(u_j)}{Q} p(uj)=Qq(uj)

即样本点落在 u j u_j uj 处的频率值,可以作为概率的估计值。超越 u j u_j uj 的概率值为
P ( u j ) = ∑ k = j m p ( u k ) P(u_j)=\sum_{k=j}^m p(u_k) P(uj)=k=jmp(uk)

P ( u j ) P(u_j) P(uj) 即为超越概率估计值。

例:
X X X = = = { \left \{\right. { − 2.5875 , -2.5875, 2.5875, − 2.5621 , -2.5621, 2.5621, − 1.1896 , -1.1896, 1.1896, − 1.1882 , -1.1882, 1.1882, − 1.2074 , -1.2074, 1.2074, − 1.7865 , -1.7865, 1.7865, − 1.0498 , -1.0498, 1.0498, − 2.0894 , -2.0894, 2.0894, − 1.6859 , -1.6859, 1.6859, − 1.3128 , -1.3128, 1.3128, − 1.1729 , -1.1729, 1.1729, − 1.9419 , -1.9419, 1.9419, − 1.6125 , -1.6125, 1.6125, − 1.9118 , -1.9118, 1.9118, − 2.5795 , -2.5795, 2.5795, − 1.2603 -1.2603 1.2603 } \left.\right \} }
试以 U = { u 1 , u 2 , … , u 7 } U = \left\{ u_1, u_2, …, u_7 \right\} U={u1,u2,,u7} = = = { − 3 , − 2.5 , − 2 , … , 0 } \left\{ -3, -2.5, -2, …, 0 \right\} {3,2.5,2,,0}为论域;
h = 2.6851 ∗ − 1.0498 + 2.5875 16 − 1 = 0.2753 h = 2.6851 * \frac{-1.0498 + 2.5875}{16 - 1} = 0.2753 h=2.68511611.0498+2.5875=0.2753为扩散系统,使用正态扩散方法进行估计
Matlab代码如下:

x = [-2.5875, -2.5621, -1.1896, -1.1882, -1.2074, -1.7865, -1.0498, -2.0894, -1.6859, -1.3128, -1.1729, -1.9419, -1.6125, -1.9118, -2.5795, -1.2603];
u = [-3, -2.5, -2, -1.5, -1, -0.5, 0];

xlength = length(x);
ulength = length(u);
maxX = max(x);
minX = min(x);

if xlength == 5
    h = 0.8146 * (maxX - minX);
elseif xlength == 6
    h = 0.5690 * (maxX - minX);
elseif xlength == 7
    h = 0.4560 * (maxX - minX);
elseif xlength == 8
    h = 0.3860 * (maxX - minX);
elseif xlength == 9
    h = 0.3362 * (maxX - minX);
elseif xlength == 10
    h = 0.2986 * (maxX - minX);
elseif xlength > 10
    h = 2.6851 * (maxX - minX) / (xlength - 1);
else
    h = 0;
end

f = zeros(xlength, ulength);
C = zeros(xlength, 1);
q = zeros(ulength, 1);
for i = 1 : xlength
    for j = 1 : ulength
        f(i, j) = 1.0 / (h * sqrt(2 * pi)) * exp(-(x(i) - u(j)) ^ 2 / (2 * h ^ 2));
        C(i) = C(i) + f(i, j);
    end
end

for i = 1 : xlength
    for j = 1 : ulength
        f(i, j) = f(i, j) / C(i);
        q(j) = q(j) + f(i, j);
    end
end
Q = sum(q);
p = q ./ Q;
P = zeros(ulength, 1);
for i = 1 : ulength
    for j = i : ulength
        P(i) = P(i) + p(j);
    end
end

输出结果为:

u -3 -2.5 -2 -1.5 -1 -0.5 0
p 0.0419 0.1583 0.2251 0.3114 0.2674 0.0157 4.9511e-05
P 1 0.9581 0.7999 0.5748 0.2634 0.0157 4.9511e-05
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

信息扩散原理及实现(Matlab) 的相关文章

  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • 使用并集查找(又名不相交集)检测图是否是二分图

    我正在 Spoj 上做一个问题 基本上可以简化为检测图是否是二分图 我正在尝试使用 dfs 为图表着色 但它太慢了 有人评论这个 没有 bfs 没有 dfs 没有二部图 简单的并查集就可以做到 确实速度很快 提示 1 偶数长度的环不会影响两
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • 子序列和

    给定一个整数数组 例如 1 2 3 1 查找是否存在总和为0并返回它 例如 1 2 3 or 2 3 1 检查每个子序列是O n 2 这效率太低了 有改进的想法吗 创建一个新数组 其中每个元素等于前一个元素加上该元素的总和 Input 1
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • 照片马赛克算法。如何在给定基本图像和瓷砖列表的情况下创建马赛克照片?

    Hy 我要做的是创建一个程序 使用 C 或 C 它将 24 位 像素位图和图像集合作为输入 我必须创建一个马赛克图像 类似于使用库的输入图像给定的图像 创建与输入类似的马赛克照片 到目前为止 我可以访问输入的图像像素及其颜色 但我有点卡住了
  • 有没有时间复杂度为O(N)的排序算法?

    大多数排序算法的复杂度为 O NN 或 O NlogN 来实现结果 但是 对于特定的输入集 有些算法的复杂度为 O N 我想知道是否有一种排序算法在所有情况下都具有 O N 的复杂度 如果您只能比较 检查两个项目是否为 正在排序的值 那么您
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • MATLAB 除法...29/128 应该返回 0 吗?

    我真的不认为这是一个精度问题 答案应该是0 226左右 这是确切的代码 val I i j bucketSize pos val bucketSize I只是我从中获取值的矩阵 以下是 MATLAB 的输出 val 29 bucketSiz
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • 使用简单矩阵乘法时出错

    我在一次简单的乘法运算中偶然发现了一个错误 这让我感到非常惊讶 我一直以为这里发生了什么 只为矩阵乘法 http www mathworks nl help matlab matlab prog operators html x 2 y z
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • Deploytool for MATLAB R2013b 不起作用,发生了什么变化?

    多年来我一直在使用集成deploytool为我的同事创建易于分发的 exe 文件 我几天前安装了R2013b 但无法使用deploytool不再了 尝试打包时的日志文件给出了以下内容 ant
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选

随机推荐

  • 剑指 Offer 36. 二叉搜索树与双向链表

    剑指 Offer 36 二叉搜索树与双向链表 难度中等285 输入一棵二叉搜索树 将该二叉搜索树转换成一个排序的循环双向链表 要求不能创建任何新的节点 只能调整树中节点指针的指向 为了让您更好地理解问题 以下面的二叉搜索树为例 我们希望将这
  • 机器学习实战2(决策树篇)

    目录 1 决策树 2 决策树的构造 3 决策树的可视化 4 测试和存储决策树 1 决策树 你是否玩过二十个问题的游戏 游戏的规则很简单 参与游戏的一方在脑海里想某个事物 其他参与者向他提问题 只允许提20个问题 问题的答案也只能用对或错回答
  • QList(增删改查)示例

    特点 支持随机访问 其界面也是基于索引的 在中间的任意一端插入或移除项都是非常快速的 注 访问QList中的值时 尽量采用value int i 因为value查不到此值时会返回一个默认值0 而at int i 则会引起崩溃 并且at返回的
  • QT字符串以16进制接收再转化为固定位数的二进制(QT系列11)

    代码 bool OK QString str 1E QString str1 16进制转化 int val str toInt OK 16 qDebug lt
  • GitHub Copilot 体验

    LHS 475 b NASA s Webb Confirms Its First Exoplanet NASA 介绍 什么是GitHub Copilot GitHub Copilot是由GitHub和OpenAI公司共同开发的基于云的AI编
  • Volatile的其他特性

    2 1 volatile总体概览 在上一节中 我们已经研究完了volatile可以实现并发下共享变量的可见性 volatile除了保证可见性外 volatile还具备如下一些突出的特性 volatile的原子性问题 volatile不能保证
  • 编写程序对给定的有向图(不一定连通)进行深度优先遍历_TypeScript 实战算法系列(七):实现图的遍历...

    本文由图雀社区认证作者 神奇的程序员 写作而成 图雀社区将连载其TypeScript 实战算法系列 点击阅读原文查看作者的掘金链接 感谢作者的优质输出 让我们的技术世界变得更加美好 前言 有一个图 我们想访问它的所有顶点 就称为图的遍历 遍
  • JSBinding iOS与JS交互(When-iOS-loves-JS)

    What s JSBinding It s Not Hybrid It s NOT a new technology JSBinding 绑定JS和Native JSBinding和HyBrid的对比 原生OC语音和脚本JS语言对比 API
  • v-html 不识别\n解决方法

    在 html 中的一些特殊场景中需要某一段文字遇到 n 就行换行 但是往往加了后没有效果 那是因为html标签不识别 n 认为 n 只是一个普通的文本 解决这种问题通常有以下几种方案 1 利用正则将html的 n换成 br div div
  • Kafka接入

    Kafka接入 1 引入依赖
  • php实现完整区块链,PHP实现区块链BlockChain

    Block Struct class block private index private timestamp private data private previous hash private random str private h
  • 使用zabbix监控avamar【二】

    1 在 使用zabbix监控avamar 一 中介绍了如何设置avamar端 并发送测试消息 本篇将介绍如何在zabbix server端进行配置 2 在zabbix server的snmp trap日志文件中查找刚上传的报警信息 可以看到
  • Js实现复杂计算和简单运算,以及函数传递任意多个参数的参数的方法

    1 实现复杂运算可以通过调用eval 方法进行计算 获取结果 使用eval string 方法 内部对象是string let a eval 1 2 8 6 2 1 console log a 或者写成 var string 1 2 8 6
  • C++ 输出二进制数

    这几天学组成原理 碰到需要输出二进制数的情况 验证a 2 n a gt gt n 我想用高级语言内在的模块实现 程序如下 bitset后面的 lt gt 中的数字 指定输出的位数 include
  • 2023最新一文学会fastdfs单节点部署(含安装包镜像包)

    1 实验环境 镜像版本 麒麟服务器镜像V10SP2 镜像下载地址 链接 https pan baidu com s 11BopM7FsmvUFud D68J7Rg pwd 1234 提取码 1234 安装包下载地址 链接 https pan
  • Java中Overriding)和Overload是什么意思?

    一 解释 方法覆盖 Overriding 也叫做 方法重写 重写发生在子类和父类之间 具体实现是子类对父类中一个可访问的 Private 修饰的方法不可被继承 方法的重写 保证其方法名参数的个数 参数的类型不变 重载 Overload 发生
  • vim退出编辑模式

    退出vi 末行模式 last line mode 建议在退出vi前 先按ESC键 以确保当前vi的状态为命令方式 然后再键入 冒号 输入下列命令 退出vi 1 w 将编辑缓冲区的内容写入文件 则新的内容就替代了原始文件 这时并没有退出vi
  • 计算机视觉——目标检测、实例分割(语义分割)、人体关键点检测

    计算机视觉 目标检测 实例分割 1 目标检测 2 实例分割 3 人体关键点检测 1 目标检测 一张图片中有多个类别目标 要求不仅仅是对图像目标进行分类 还要准确的标记出目标的位置信息 以提取目标 比如车牌检测 不仅要确定有车牌 还要车牌的准
  • 代码保护软件VMProtect内置脚本的使用——Mach-O文件

    VMProtect是一种很可靠的工具 可以保护应用程序代码免受分析和破解 但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下 才能实现最好的效果 本文继续对VMProtect中强大的内置脚本的使用进行介绍 希望对您有
  • 信息扩散原理及实现(Matlab)

    信息扩散方法是为了弥补信息不足而考虑优化利用样本模糊信息的一种对样本进行集值化的模糊数学处理方法 最原始的形式是信息分配方法 最简单的信息扩散函数是正态扩散函数 信息扩散方法可以将一个分明值的样本点 变成一个模糊集 或者说 是把单值样本点