如何理解码分复用中的码分多址CDMA?
如何理解CDMA?
推荐参考大神文章 https://blog.csdn.net/dog250/article/details/6420427
(码分多址(CDMA)的本质-正交之美)
首先我们先看《计算机网络(第七版)》(谢希仁)第57页关于CDMA的有关介绍

……

为了不让码片序列不会造成互相干扰,需要让码片序列对应的码片向量相互正交。
那什么是正交?
从概念上来讲,两个向量的对应元素乘积总和为 0,则这两个向量正交。
如果换成”垂直“两个字也许会更好理解一点。
在二维平面中,x轴和y轴相互正交。
在三维平面中,x轴、y轴、z轴相互正交。

那么正交会给我们带来什么样的性质呢?
抛开码片序列不谈,我们可以考虑下面的例子
现有两个用户x轴和y轴,我们要给x发送1,给y发送2
于是,我们将两个数据进行合成,变为 [1,2]。
显然,它能够被x和y准确的识别,因为x、y只关心属于他们的“特征”,或者说“分量”。对于x轴来说,只需简单的用数据data · x轴单位向量即可识别出自己所需要的数据为1。
这个例子虽然和CDMA有一些小区别,但是道理很相似。
个人觉得正交的最大好处就在于互不影响
实例
这里我们先不关心码片序列是如何编码的,我们看真正的一个例子
首先我们需要明白两个式子:
对于任何码片向量S,我们有规格化内积为1,即\(\frac{1}{m}S\cdot S=1\)
对于任何两个不同的码片向量S、T,它们正交,即\(S\cdot T=0\)
假设我们已经知道了A、B的码片序列分别为
A:00001111
B:01011010
则它们对应的码片向量为
A:-1 -1 -1 -1 1 1 1 1
B:-1 1 -1 1 1 -1 1 -1
假设向用户A发送数据010
向用户B发送数据011
则用户A的数据经过用户A的码片序列编码后为
-A A -A
用户B的数据经过用户B的码片序列编码后为
-B B B
二者叠加后数据为
-A-B A+B -A+B
对于用户A来说,要解析这一串数据,只需用数据内积自己的码片向量,即data·A。
即 (-A-B)·A = -A·A - B·A = -8 - 0 = -8,规格化之后就是 -1,对应的比特位为0。
同理 (A+B)·A = A·A + B·A = 8 + 0 = 8,规格化之后就是 1,对应的比特位为1。
(-A+B)·A = -A·A + B·A = -8 + 0 = -8,规格化之后就是 -1,对应的比特位为0。
即,用户A成功解析出了数据为010。
python代码实现
import numpy as np
# 定义码片序列,转为码片向量
A = np.array([-1,-1,-1,-1,1,1,1,1])
B = np.array([-1,1,-1,1,-1,1,-1,1])
C = np.array([-1,-1,1,1,1,1,-1,-1])
# 用seq给数据编码
def encode(data,seq):
c = None
for i in data:
if int(i):
if c is not None:
c = np.vstack([c,seq])
else: c = seq
else:
if c is not None:
c = np.vstack([c,-seq])
else: c = -seq
return c
# 用seq给数据解码
def decode(data,seq):
d = data @ seq / seq.size
d[d<0] = 0
d = d.astype(int)
return "".join([str(x) for x in d.tolist()])
EA = encode('01110',A)
EB = encode('01001',B)
EC = encode('11100',C)
data = EA + EB + EC
print("合成数据为:",data,sep='\n')
print(decode(data,A))
print(decode(data,B))
print(decode(data,C))
运行结果:

如何理解码分复用中的码分多址CDMA?的更多相关文章
- 如何理解javaSript中函数的参数是按值传递
本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...
- 怎么理解js中的事件委托
怎么理解js中的事件委托 时间 2015-01-15 00:59:59 SegmentFault 原文 http://segmentfault.com/blog/sunchengli/119000 ...
- 如何理解T-SQL中Merge语句(二)
写在前面的话:上一篇写了如何理解T-SQL中Merge语句,基本把Merge语句要讲的给讲了,在文章的后面,抛出了几个结,当时没有想明白怎么去用文字表达,这一篇就来解答一下这几个结,又是一篇“天马行空 ...
- 如何理解T-SQL中Merge语句
写在前面的话:之前看过Merge语句,感觉没什么用,完全可以用其他的方式来替代,最近又看了看Merge语句,确实挺好用,可以少写很多代码,看起来也很紧凑,当然也有别的优点. ====正文开始===== ...
- 深入理解JDK中的I/O
深入理解JDK中的I/O 目 录 java内存模型GCHTTP协议事务隔离级并发多线程设计模式清楚redis.memcache并且知道区别mysql分表分库有接口幂等性了解jdk8稍微了解一下特性 j ...
- 深度理解Jquery 中 offset() 方法
参考原文:深度理解Jquery 中 offset() 方法
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- 深入理解CSS中的层叠上下文和层叠顺序(转)
by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...
- 理解JavaScript中的原型继承(2)
两年前在我学习JavaScript的时候我就写过两篇关于原型继承的博客: 理解JavaScript中原型继承 JavaScript中的原型继承 这两篇博客讲的都是原型的使用,其中一篇还有我学习时的错误 ...
随机推荐
- git远程仓库创建及代码提交
git仓库创建:1. mkdir project-repertory2. cd project-repertory3. git init --bare 此时,git仓库已成功创建. 本地要提交的代码在 ...
- LR Robust Stereo VIO for Fast Autonomous Flight
Abstract 我们展示说我们的Stereo MSCKF在算力上跟state-of-the-art的单目方案是可比的, 而且提供了很大的鲁棒性. 1. Introduction 贡献 第一个开源的f ...
- 刷题[SUCTF 2018]GetShell
解题思路 进入upload,发现有源码,代码审计 代码审计 大概意思就是,读取我们上传的文件,截取第五位之后的内容,与黑名单不匹配才能上传成功 我传的是一个空的txt文件,发现会变成php文件,那好办 ...
- 剑指offer-链表&数组
1.圆圈中最后剩下的数 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈. ...
- Android 自定义Vie 对勾CheckBox
天在美团点外卖,有一个商品推荐的条目,上面的CheckBox是自定义的,虽然我们大部分都是用图片来自定义样式.但是还是可以自定义View来绘制的,只要画一个圆和对勾即可. 最终效果 最终效果.png ...
- 开源 C#工作流管理平台
{ font-family: 宋体; panose-1: 2 1 6 0 3 1 1 1 1 1 } @font-face { font-family: "Cambria Math" ...
- C/C++ 条件编译
条件编译就是指有条件的编译,即根据条件去编译代码,在编译阶段时就对代码做出取舍,有的编译,有的不编译,这样比写成一个个判断函数更有效率,比如工程代码大部分的地方都类似,只有个别语句因为使用的硬件版本不 ...
- HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 02
工具1:HBuilder X 1.9.9.20190522 工具2:火狐浏览器 67.0.4 (64 位) 其实,我想使用表格,做一个这样的颜色表,如下图所示: 例 3:我们参照上图,基于上一个例子, ...
- 【题解】NOIP2018 赛道修建
题目戳我 \(\text{Solution:}\) 根据题目信息简化题意,是让你在树上找出\(m\)条路径使得路径长度最小值最大. 看到题第一感先二分一个答案,问题转化为如何选择一些路径使得它们最小值 ...
- DM8数据库备份还原的原理及应用
(本文部分内容摘自DM产品技术支持培训文档,如需要更详细的文档,请查询官方操作手册,谢谢) 一.原理 1.DM8备份还原简介 1.1.基本概念 (1)表空间与数据文件 ▷ DM8表空间类型: ▷ SY ...