验证双随机矩阵(doubly stochastic matrix) 满足C(P)=C(P^T)

验证双随机矩阵(doubly stochastic matrix) 满足C( P P P)=C(P T ^T T)

双随机矩阵:

在数学中,一个双随机矩阵doubly stochastic matrix)是一个满足以下条件的矩阵:

  1. 非负矩阵:矩阵中的每个元素都是非负的。
  2. 行和为 1:矩阵的每一行的元素之和都等于1。
  3. 列和为 1:矩阵的每一列的元素之和也等于1。

因此,双随机矩阵是一个同时满足“每一行的元素和为1”和“每一列的元素和为1”的矩阵。


验证程序:

import numpy as np
from scipy.optimize import minimizedef mutual_information(p, P):# 计算输出分布py = p @ P# 计算H(Y|X)hyx = 0for i in range(len(P)):for j in range(len(P[0])):if P[i,j] > 0:hyx -= p[i] * P[i,j] * np.log2(P[i,j])# 计算H(Y)hy = -sum(py[j] * np.log2(py[j]) if py[j] > 0 else 0 for j in range(len(py)))return hy - hyxdef channel_capacity(P):n = len(P)# 定义约束:概率和为1constraints = ({'type': 'eq', 'fun': lambda x: np.sum(x) - 1})# 定义边界:概率在[0,1]之间bounds = [(0,1) for _ in range(n)]# 初始猜测:均匀分布x0 = np.ones(n)/n# 最大化互信息result = minimize(lambda x: -mutual_information(x, P), x0,constraints=constraints, bounds=bounds)return -result.fun# 定义双随机矩阵# 对称信道
# P = np.array([[0.5,0.3,0.2],
#               [0.2,0.5,0.3],
#               [0.3,0.2,0.5]])# 不满足对称信道
P = np.array([[0.5,0.4,0.1],[0.3,0.3,0.4],[0.2,0.3,0.5]])# 计算P的信道容量
cap_P = channel_capacity(P)
# 计算P^T的信道容量
cap_PT = channel_capacity(P.T)print(f"C(P) = {cap_P:.6f} bits")
print(f"C(P^T) = {cap_PT:.6f} bits")

验证结果:

1. 满足双随机且是对称信道:

#对称信道
P = np.array([[0.5,0.3,0.2],[0.2,0.5,0.3],[0.3,0.2,0.5]])

计算结果:

在这里插入图片描述

对于对称信道:

C( P P P) = log(m) - H(Y|ai) =log3 - H(0.5, 0.3, 0.2)

C(P T ^T T) = log(m) - H(Y|ai) =log3 - H(0.5, 0.3, 0.2)

直接可以看出C( P P P)=C(P T ^T T)

2. 满足双随机但不是对称信道:

# 不满足对称信道
P = np.array([[0.5,0.4,0.1],[0.3,0.3,0.4],[0.2,0.3,0.5]])

计算结果:
在这里插入图片描述

3. 结论:

由此可见:对于转移概率满足双随机矩阵的信道,满足C( P P P) = C(P T ^T T)。

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

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

相关文章

教资考试题目

综合多选题 高等教育政策在评估的实施阶段需要完成的工作有(BCD) A. 制定评估计划 B. 收集整理政策信息 C. 统计、分析政策信息 D. 充分运用评估方法获取结论 恪尽师者规范,严守师德“红线”,需要教师(ABCD&…

Chrome 浏览器开启打印模式

打开开发者工具ctrl shift p输入print 找到 Emulate CSS print media type

Vite初始化Vue3+Typescrpt项目

初始化项目 安装 Vite 首先,确保你的 Node.js 版本 > 12.0.0。然后在命令行中运行以下命令来创建一个 Vite Vue 3 TypeScript 的项目模板: npm init vitelatest进入项目目录 创建完成后,进入项目目录: cd vue3-demo启动…

24 年第十届数维杯国际数模竞赛赛题浅析

本次万众瞩目的数维杯国际大学生数学建模赛题已正式出炉,无论是赛题难度还是认可度,该比赛都是数模届的独一档,含金量极高,可以用于综测加分、保研、简历添彩等各方面。考虑到大家解题实属不易,为了帮助大家取得好成绩…

Spring Boot 集成 Kettle

Kettle 简介 Kettle 最初由 Matt Casters 开发,是 Pentaho 数据集成平台的一部分。它提供了一个用户友好的界面和丰富的功能集,使用户能够轻松地设计、执行和监控 ETL 任务。Kettle 通过其强大的功能和灵活性,帮助企业高效地处理大规模数据集…

自动语音识别(ASR)与文本转语音(TTS)技术的应用与发展

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Linux】内核模版加载modprobe | lsmod

modprobe modprobe 是一个用于加载和卸载 Linux 内核模块的命令。它不仅能够加载单个模块,还能处理模块之间的依赖关系,确保所有依赖的模块都被正确加载。以下是一些关于 modprobe 命令的基本用法和常见选项的详细介绍。 基本语法 modprobe [option…

matlab 读取csv

需要跳过第一行表头等信息 1、读取整个文件 csvread(FILENAME)%文件路径 文件名2、指定起始位置 csvread(FILENAME, R, C)%从文件的第R行和第C列开始读取数据 逗号分开3、指定数据范围 csvread(FILENAME, R, C, [R1 C1 R2 C2])%读取从(R1, C1)到(R2, C2)范围内的数据注意&am…

CentOS8 启动错误,enter emergency mode ,开机直接进入紧急救援模式,报错 Failed to mount /home 解决方法

先看现场问题截图: 1.根据提示 按 ctrld 输入 root 密码,进入系统。 2. 在紧急模式下运行:journalctl -xe ,查看相关日志,找到关键点: Failed to mount /home 3.接着执行修复命令: xfs_repa…

记录一下跨域的问题,讲讲跨域

一、为什么有跨域 跨域问题本质上是由于浏览器的同源策略(Same Origin Policy)引起的。这个策略是为了增强网页的安全性,防止恶意网站获取用户的敏感信息。也就是说经过浏览器的才有跨域,在前端代码中进行数据请求的时候往往都要…

Java项目实战II基于微信小程序的课堂助手(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字化教…

hbase集成phoenix

1.环境 环境准备 三台节点zookeeper三节点hadoop三节点hbase三节点 2.pheonix集成 官网下载地址,需挂梯子,使用官网推荐的对应hbase版本即可 https://phoenix.apache.org/download.html下载及解压 wget https://dlcdn.apache.org/phoenix/phoenix-…

YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11 推理的 C++ 和 Python 实现

yolo 推理 YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11 推理的 C 和 Python实现。 支持的推理后端包括 Libtorch/PyTorch、ONNXRuntime、OpenCV、OpenVINO 和 TensorRT。 支持的任务类型包括分类、检测和分割。 支持的模型类型包括FP32、FP16和INT8。 yolo测…

借助 Pause 容器调试 Pod

借助 Pause 容器调试 Pod 在 K8S 中,Pod 是最核心、最基础的资源对象,也是 Kubernetes 中调度最小单元。在介绍 Pause 容器之前需要先说明下 Pod 与容器的关系来理解为什么需要 Pause 容器来帮助调试 1. Pod 与 容器的关系 Pod 是一个抽象的逻辑概念&…

IDEA自定义文件打开格式

介绍在IDEA中自定义文件打开格式的方法,比如一个文件,可以选择用txt格式打开,也可以选择用xml格式打开,也可以用java格式打开等等,通过这个方法可以方便的用任意格式在idea中打开想要打开的文件。 下面分别讨论三种不…

Git 分⽀规范 Git Flow 模型

前言 GitFlow 是一种流行的 Git 分支管理策略,由 Vincent Driessen 在 2010 年提出。它提供了一种结构化的方法来管理项目的开发、发布和维护,特别适合大型和复杂的项目。GitFlow 定义了一套明确的分支模型和工作流程,使得团队成员可以更有效…

ECG心电前级信号提取

由于ECG信号很微弱,处于mV级别,还有很多干扰信号,所以采集信号时需要进行滤波和放大处理,然后使用模数转换。为了滤波高频干扰和工频噪声,需要使用低通滤波器和陷波器抑制噪声,有时也要使用高通滤波器滤除低…

大三学生实习面试经历(1)

最近听了一位学长的建议,不能等一切都准备好再去开始,于是就开始了简历投递,恰好简历过了某小厂的初筛,开启了线上面试,记录了一些问题: (通过面试也确实了解到了自己在某些方面确实做的还不够…

【Android】逆向开发与反逆向开发入门知识(一)

目录 逆向开发反编译 & 反混淆反编译工具反编译反混淆 修改预置资源文件抓包前期准备二次打包重签名 如何预防 App 被逆向开发?代码混淆应用加固防止动态调试Root 检测二次打包检测 警告:逆向开发相关知识请在法律规定范围内使用,请勿使用…

华为Mate 70临近上市:代理IP与抢购攻略

随着科技的飞速发展,智能手机已经成为我们日常生活中不可或缺的一部分。而在众多智能手机品牌中,华为一直以其卓越的技术和创新力引领着行业的发展。近日,华为Mate 70系列手机的发布会正式定档在11月26日,这一消息引发了众多科技爱…