CDMA编码实现

news/2024/11/8 23:59:49/

朋友写的。Python实现的。用的是PyCharm编译。
代码如下

def split_list_average(send, n): # 用于分割指定长度字符串
for i in range(0, len(send), n):
yield send[i:i + n]

def check_chip(chipS, chipT, chipU, chipV): # 判断码片之间是否相互正交
def check(chipA, chipB):
if sum(list(map(lambda x, y: x * y, chipA, chipB))) == 0: return True # 判断其内积是否为0

if check(chipS, chipT) and check(chipS, chipU) and check(chipS, chipV) and check(chipT, chipU) and check(chipT, chipV) and check(chipU, chipV):return True
return False

def get_vector(chip, send): # 用于通过传输信息与码片信息得出发送的向量信息
vector = []
reverse = list(map(lambda x: x * (-1), chip))
for i in send:
i = int(i)
if i == 1:
vector.extend(chip)
elif i == 0 or i == -1:
vector.extend(reverse)
else:
print(“发送数据出现非法字符。”)
return
return vector

def send_message(chipS, chipT, chipU, chipV): # 输入四个站分别发送的信息,输入要传输的信息,进而生成发送的加密信息
if not check_chip(chipS, chipT, chipU, chipV):
print(“码片不符合要求”)
return
sendS = input(“请输入S站要发送数据,每个数字之间用空格隔开:”).split(" “)
sendT = input(“请输入T站要发送数据,每个数字之间用空格隔开:”).split(” “)
sendU = input(“请输入U站要发送数据,每个数字之间用空格隔开:”).split(” “)
sendV = input(“请输入V站要发送数据,每个数字之间用空格隔开:”).split(” “)
if len(sendS) == len(sendT) == len(sendU) == len(sendV):
print(”\n码片创建成功,请输入每个站发送信息\n")
vectorS = get_vector(chipS, sendS)
vectorT = get_vector(chipT, sendT)
vectorU = get_vector(chipU, sendU)
vectorV = get_vector(chipV, sendV)
if vectorS is not None and vectorT is not None and vectorU is not None and vectorV is not None:
send = list(map(lambda x, y, z, t: x + y + z + t, vectorS, vectorT, vectorU, vectorV))
print(“发送数据为:”)
print(send)
return send
return

def receive_message(chip, send): # 每个站根据自己的码片信息与接收信息进行正交从而解密接收信息
decrypt = []
if send is not None:
for i in split_list_average(send, len(chip)):
decrypt.append(int(sum(list(map(lambda x, y: x * y, i, chip))) / 8


http://www.ppmy.cn/news/527668.html

相关文章

CDMA移动终端卡——UIM(转)

UIM(User Identity Module)代表了移动终端卡未来发展方向,它比传统的 鉴权手段如MIN/IMSI、MIN/ESN适配方式更具优势。UIM ID方式除了适用于CDMA 系统外,还可用于GSM系统和其他的TDMA方式以及第三代移动通信…

进行码分多址CDMA通信

共有四个站进行码分多址CDMA通信。四个站的码片序列为:A: (-1 -1 -1 +1 +1 -1 +1 +1). B: (-1 -1 +1 -1 +1 +1 +1 -1).C: (-1 +1 -1 +1 +1 +1 -1 -1). D: (-1 +1 -1 -1 -1 -1 +1 -1).现收到的码片序列为(-1 +1 -1 -1 -1 -1 -1 +1 -1).问哪个站发送数据了?发送数据的站…

码分复用CDM(Code Division Multiplexing);码分多址CDMA(Code Division Multiple Access)

目录 码分多址码片序列实现了扩频CDMA 的重要特点CDMA 工作原理例题 码分多址 当码分复用信道为多个不同地址的用户所共享时,就称为码分多址。 每一个用户可以在同样的时间使用同样的频带进行通信,码分复用集合了频分复用和时分复用的优点。且抗干扰能力…

码分复用CDMA的原理

码分复用CDMA的原理 感性理解: ​ 可以感性的理解为:我只接受我所期望的信号类型,并且能够通过一定的方式将多个信号源分离出来。 工作原理: ​ 每一个比特时间再被细分为m个更短的时间间隔。每个时间间隔被称为码片&#xff…

xDSL:数字用户线路技术(DSL、IDSL、ADSL、HDSL、SDSL、VDSL、G.Lite)--网络大典

数字用户线路(xDSL)是在家庭和企业的普通铜质电话线路(POTS)上提供宽带数据访问的一种调制解调器技术。xDSL 是所有 DSL 类型的统称,诸如 ADSL、G.Lite、HDSL、SDSL、IDSL 和 VDSL 等。 xDSL 有时称为“最后一英里”技…

xDSL技术简介

随着xDSL技术的问世,铜线从只能传输语音和56kbts的低速数据接入,发展到已经可以传输高速数据信号。ADSL、VDSL、 GSHDSL等基于铜线传输的xDSL接入技术使铜线成为宽带用户接入的一个重要手段 在PON技术普及之前,成为宽带接入的主流技术。 xDSL系统主要由局端设备 (Digital Subsc…

vld使用

http://vld.codeplex.com/documentation 最近发现用vs2013,vld的版本是2.3,发现 检测不了 Visual Leak Detector Version 2.3 installed. No memory leaks detected. Visual Leak Detector is now exiting. 网上也已经证实了这个bug,于是下载 Recommende…

数字用户线(Digital Subscriber Line,DSL)

数字用户线(Digital Subscriber Line,DSL) 数字用户线(Digital Subscriber Line,DSL) 是基于普通电话线的宽带接入技术,可以在一对铜质双绞线上同时传送数据和话音信号。 DSL有多种模式,统称为xDSL 根据上…