前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >离散信源 R(D)计算及限失真信源编码定理

离散信源 R(D)计算及限失真信源编码定理

作者头像
timerring
发布于 2023-05-01 08:32:39
发布于 2023-05-01 08:32:39
6700
举报
文章被收录于专栏:TechBlogTechBlog

离散信源 R(D)计算

给定信源概率

p_{\mathrm{i}}

和失真函数

d_{\mathrm{i} j}

就可以求得该信源的 R(D) 函数。

它是在保真度准则下求极小值的问题。

但要得到它的显式表达式,一般比较困难。通常用参量表达式。即使如此,除简单的情况外实际计算还是困难的, 只能用迭代逐级逼近的方法。

二元对称信源的 R(D) 函数

设二元对称信源

X=\{0,1\}

, 其概率分布

p(x)=[p, 1-p]

,接收变量

\mathbf{Y}=\{\mathbf{0}, \mathbf{1}\}

,汉明失真矩阵

d=\left[\begin{array}{ll} 0 & 1 \\ 1 & 0 \end{array}\right]

因而最小允许失真度

D_{\min }=0

。并能找到满足该最小失真的试验信道, 且是一个无噪无损信道, 其信道矩阵为

p=\left[\begin{array}{ll} 1 & 0 \\ 0 & 1 \end{array}\right]

计算得:

\mathrm{R}(0)=\mathrm{I}(\mathrm{X} ; \mathrm{Y})=\mathrm{H}(p)

最大允许失真度为

\begin{aligned} D_{\text {max }} & =\min _{j=0,1} \sum_{i=0}^{1} p_{i} d_{i j} \\ & =\min \{p(0) d(0,0)+p(1) d(1,0), p(0) d(0,1)+p(1) d(1,1)\} \\ & =\min _{j}\{(1-p), p\}=p \\ \end{aligned}

要达到最大允许失真度的试验信道, 唯一确定为

p=\left[\begin{array}{ll} 0 & 1 \\ 0 & 1 \end{array}\right]

这个试验信道能正确传送信源符号 x=1 , 而传送信源符号 x=0 时,接收符号 一定为

\mathrm{y}=1

。凡发送符号 x=0 时,一定都错了。而 x=0 出现的概率为 p , 所以信道的平均失真度为

\boldsymbol{p}

在这种试验信道条件下, 可计算得

\mathbf{R}\left(\mathbf{D}_{\max }\right)=\min _{P_{D \max }} I(X ; Y)=\boldsymbol{H}(\boldsymbol{Y})-\boldsymbol{H}(\boldsymbol{Y} \mid \boldsymbol{X})=\mathbf{0}

对于二进制无记忆信源, 若

P(X_{\mathrm{i}}=0)=p, P(X_{\mathrm{i}}=1)=1- p

, 且采用汉明失真, 其率失真函数为

R(D)=\left\{\begin{array}{cc} H_{b}(p)-H_{b}(D), & 0 \leq D \leq \min \{p, 1-p\} \\ 0, & \text { otherwise } \end{array}\right.

有一个二进制无记忆信源,以概率p=0.25输出“1”,以概率1-p=0.75输出“0”。请问: (1)若要求采用无失真信源编码,信息率失真函数是多少? (2)若重构该信源的错误概率不超过0.1,信息率失真函数是多少? (3)若重构该信源的错误概率不超过0.25,信息率失真函数是多少?这种情况下,最佳的译码策略是什么? 解: (1)

H(x)=-0.25 \log 0.25-0.75 \log 0.75=0.8113 bit/sym

(2)

H(0.25)-H(0.1)=0.3423 bit/sym

(3) 0. 最佳译码策略是将接收到的信号都译码为 ’ 0 ’

高斯信源的 R(D)函数

对于均值为 0 , 方差为

\sigma^{2}

的高斯信源, 采用平方失真时的率失真函数为

R(D)=\left\{\begin{array}{cc} \frac{1}{2} \log \frac{\sigma^{2}}{D}, & 0 \leq D \leq \sigma^{2} \\ 0, & \text { otherwise } \end{array}\right.

可见, 随着D的增大, R(D)减小。 当

D \geqslant D \max

时, R(D)=0

一般信息率失真函数的图形如下所示

限失真信源编码定理

设离散无记忆信源

\mathrm{X}

的信息率失真函数为

R(\mathrm{D})

,

  • 当信息率 R>R(D) 时, 只要信源序列长度 L 足够长,一定存在一种编码方法,其译码失真小于或等于
D+\varepsilon

,

\varepsilon

为任意小的正数;

  • 反之, 若 R<R (D), 则无论采用什么样的编码方法, 其译码失真必大于 D。

如是二元信源, 则对于任意小的

\varepsilon>0

, 每一个信源符号的平均码长满足如下公式:

R(D) \leq \bar{K} \leq R(D)+\varepsilon

参考文献:

  1. Proakis, John G., et al. Communication systems engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  2. Proakis, John G., et al. SOLUTIONS MANUAL Communication Systems Engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  3. 周炯槃. 通信原理(第3版)[M]. 北京:北京邮电大学出版社, 2008.
  4. 樊昌信, 曹丽娜. 通信原理(第7版) [M]. 北京:国防工业出版社, 2012.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
云原生|什么是HPA和PDB?
最近的项目,Kubernetes的人员要做系统维护的时候,需要修改我容器化应用的PDB,一直问我是否可以改动。
琉璃康康
2023/11/28
3900
云原生|什么是HPA和PDB?
如何在 Kubernetes 上部署高可用应用程序
但使用 Kubernetes 不仅仅是设置它并向其部署 pod。Kubernetes 中许多使应用程序更具弹性和高可用性的丰富功能不仅仅是一件事,而是不同流程和配置的组合。从如何在不停机的情况下部署应用程序,到调度Pod 以确保它们在节点之间正确分布。这些是我们将在本文中讨论的配置和技术的要点:
DevOps云学堂
2024/05/11
4560
如何在 Kubernetes 上部署高可用应用程序
K8S Pod 保护之 PodDisruptionBudget
在 Kubernetes 中,为了保证业务不中断或业务SLA不降级,需要将应用进行集群化部署。通过PodDisruptionBudget 控制器可以设置应用POD集群处于运行状态最低个数,也可以设置应用POD集群处于运行状态的最低百分比,这样可以保证在主动销毁应用POD的时候,不会一次性销毁太多的应用POD,从而保证业务不中断或业务SLA不降级。
YP小站
2020/06/04
2.3K0
K8s pod 动态弹性扩缩容(HPA )部署!步骤齐全,少走坑路
Horizontal Pod Autoscaler(HPA,Pod水平自动伸缩),根据平均 CPU 利用率、平均内存利用率或你指定的任何其他自定义指标自动调整 Deployment 、ReplicaSet 或 StatefulSet 或其他类似资源,实现部署的自动扩展和缩减,让部署的规模接近于实际服务的负载。HPA不适用于无法缩放的对象,例如DaemonSet。
民工哥
2022/10/27
6.8K0
K8s pod 动态弹性扩缩容(HPA )部署!步骤齐全,少走坑路
【每日一个云原生小技巧 #44】Kubernetes VPA(Pod 纵向自动扩缩)
Kubernetes VPA 自动调整 Pod 中容器的 CPU 和内存资源限制。不同于水平自动扩缩(HPA),它关注的是单个 Pod 的资源分配,而不是增加或减少 Pod 的数量。
郭旭东
2023/12/14
3430
【云原生 | Kubernetes篇】深入了解Deployment(八)
Deployment控制RS,RS控制Pod的副本数 ReplicaSet: 只提供了副本数量的控制功能 Deployment: 每部署一个新版本就会创建一个新的副本集,利用他记录状态,回滚也是直接让指定的rs生效
Lansonli
2022/06/11
4360
【云原生 | Kubernetes篇】深入了解Deployment(八)
kubernetes其他控制器之PodDisruptionBudget
在Kubernetes中为了保证业务不中断或者业务SLA不降级,需要将应用集群化部署,比如Deployment,StatefulSet部署等。虽然是集群化部署,但是在我们主动销毁Pod的时候,为了避免一次性销毁太多Pod,Kubernetes引用PodDisruptionBudget(PDB)控制器,用来控制集群中Pod的运行个数。
极客运维圈
2020/03/23
9430
kubernetes其他控制器之PodDisruptionBudget
Kubernetes(k8s)-Deployment介绍
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
运维小路
2024/12/30
2340
Kubernetes(k8s)-Deployment介绍
云原生|Hi,Pod,你被控制了!
了解了Pod的基础知识之后,对于实验来说可以通过kubectl run或者apply一个yaml来创建Pod,但是对于生产环境中构建一个CNF来说,有些Pod需要多个副本,有的运行完就不再需要了,有些需要定期执行某些任务,有些需要在不同的node上只创建一个Pod,这样通过一个一个的创建Pod是不仅费时费力且不便于维护,因此需要一个概念来根据不同需求创建对应的Pod并确保在任何时候都有对应要求的副本在运行,这个概念便是Pod的控制器。
琉璃康康
2023/11/27
1880
云原生|Hi,Pod,你被控制了!
Kubernetes 微服务最佳实践
原文作者:ryan4yin,🔗: https://thiscute.world/posts/kubernetes-best-practices/ 本文主要介绍我个人在使用 Kubernetes 的过程中,总结出的一套「Kubernetes 配置」,是我个人的「最佳实践」。其中大部分内容都经历过线上环境的考验,但是也有少部分还只在我脑子里模拟过,请谨慎参考。 阅读前的几个注意事项: 这份文档比较长,囊括了很多内容,建议当成参考手册使用,先参照目录简单读一读,有需要再细读相关内容。 这份文档需要一定的 Kube
我的小碗汤
2023/03/19
1.2K0
Kubernetes 微服务最佳实践
一文看懂 Kubernetes 弹性伸缩
在 Kubernetes 集群中,自动化资源管理和伸缩是保持应用高效运行的关键。Kubernetes 提供了几种不同的机制来帮助实现这一目标:水平自动伸缩(HPA, Horizontal Pod Autoscaler)、垂直自动伸缩(VPA, Vertical Pod Autoscaler)和集群自动伸缩(CA, Cluster Autoscaler)。这些伸缩器在功能和使用场景上有所不同:
SRE运维手记
2024/09/06
5490
一文看懂 Kubernetes 弹性伸缩
K8s降本增效之VPA上篇
VPA全称VerticalPodAutoscaler,即Pod的横向扩缩,其根据容器资源使用率自动设置CPU和内存的requests及limit,从而允许在节点上进行适当的调度,以便为每个 Pod 提供适当的资源。它既可以缩小过度请求资源的容器,也可以根据其使用情况随时提升资源不足的容量。
zouyee
2023/01/11
1.5K0
Kubernetes Pod Disruption Budget实用指南
管理Kubernetes集群在保持一致的可用性和对故障的韧性方面存在困难。虽然使用副本可以确保存在多个应用程序实例,但并不能保证应用程序运行时的不间断。
云云众生s
2024/03/28
3350
K8s:通过 Pod 干扰预算(PDB)提高节点故障、维护期间 Pod 频繁调度时工作负载的可用性
对于对高可用要求很高的一些容器化应用,例如一些有状态的工作负载,比如数据库,分布式协调服务等, K8s 集群中 Pod 频繁的调度是不能容忍的一件事。尤其涉及到应用集群数据同步,共识,心跳等诸多因素. 容易造成可用性降低,数据延迟甚至潜在的数据丢失。
山河已无恙
2023/08/21
2.1K0
K8s:通过 Pod 干扰预算(PDB)提高节点故障、维护期间 Pod 频繁调度时工作负载的可用性
Kubernetes中的OOM Killer优化技巧
Kubernetes 中的内存不足 (OOM) 杀手:如何优化容器内存管理并保持应用程序稳定性
云云众生s
2024/09/27
2140
k8s滚动升级和扩缩容
用于实现基于CPU使用率进行自动Pod扩缩容的功能。HPA控制器基于Master的kube-controller-manager服务启动参数--horizontal-pod-autoscaler-sync-period定义的探测周期(默认值为 15s),周期性地监测目标Pod的资源性能指标,并与HPA资源对象中的扩缩容条件进行对比,在满足条件时对Pod副本数量进行调整.
丁D
2022/08/12
1.6K0
一文带你掌握Kubernetes VPA(Pod纵向自动扩缩)
之前的文章我们介绍了HPA(Horizontal Pod Autoscaler)的实现,HPA一般被称为横向扩展,与HPA不同的Vertical Pod Autoscaler ( VPA ) 会自动调整 Pod 的 CPU 和内存属性,被称为纵向扩展。VPA可以给出服务运行所适合的CPU和内存配置,省去估计服务占用资源的时间,更合理的使用资源。当然,VPA也可根据资源的使用情况“调整”pod的资源。这里的调整我们用了双引号,因为他的实现机制是重建而不是动态增加。下面是一个实际的例子:假设我的memory limits是100Mi,但是现在已经用到了98Mi,如果再大的话就oom了,此时vpa会在垂直方向上提升你的memory limits的大小。这种vpa比较适合一些资源消耗比较大的应用,例如es,你给大了资源浪费,给小了,又不够。所以vpa就派上用场了。当然,vpa不像hpa默认集成在k8s里面的,需要你自己去配置的。
用户1107783
2023/09/11
2.9K0
一文带你掌握Kubernetes VPA(Pod纵向自动扩缩)
自动扩缩容HPA实践(一)
在Kubernetes中,HPA(Horizontal Pod Autoscaler)是一种自动扩缩容应用程序的方式,可以根据应用程序负载动态调整Pod副本数量。HPA是一个非常有用的功能,它可以帮助您实现自动水平扩展和收缩应用程序,并确保应用程序始终能够处理负载。
玖叁叁
2023/04/30
5530
Kubernetes HPA 详解
在前面的学习中我们使用用一个 kubectl scale 命令可以来实现 Pod 的扩缩容功能,但是这个毕竟是完全手动操作的,要应对线上的各种复杂情况,我们需要能够做到自动化去感知业务,来自动进行扩缩容。为此,Kubernetes 也为我们提供了这样的一个资源对象:HorizontalPodAutoscaling(Pod水平自动伸缩),简称 HPA,HPA 通过监控分析一些控制器控制的所有 Pod 的负载变化情况来确定是否需要调整 Pod 的副本数量,这是 HPA 最基本的原理:
我是阳明
2020/06/15
4.6K0
Kubernetes HPA 详解
什么是HPA
HPA(Horizontal Pod Autoscaler)是Kubernetes的一项功能,可以自动根据CPU使用率等指标来调整Pod副本数量,以实现自动水平扩展和收缩应用程序。使用HPA,可以根据应用程序的需求动态调整Pod数量,从而实现更好的负载均衡和资源利用率。
玖叁叁
2023/04/30
9221
相关推荐
云原生|什么是HPA和PDB?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档