深入浅出通信原理(Python代码版)

深入浅出通信原理Python代码版

深入浅出通信原理是陈爱军的心血之作,于通信人家园连载,此处仅作python代码笔记训练所用
陈老师的连载从多项式乘法讲起,一步一步引出卷积、傅立叶级数展开、旋转向量、三维频谱、IQ调制、数字调制等一系列通信原理知识

连载1:从多项式乘法说起

\[
(x+1)(x^2+2x+5)=x^3+3x^2+7x+5
\]

import sympy
x = sympy.Symbol('x')
sympy.expand((x+1)*(x*x+2*x+5))

这种计算方法总结起来就是:
反褶:一般多项式都是按x的降幂排列,这里将其中一个多项式的各项按x的升幂排列。
平移:将按x的升幂排列的多项式每次向右平移一个项。
相乘:垂直对齐的项分别相乘。
求和:相乘的各结果相加。

反褶、平移、相乘、求和-这就是通信原理中最常用的一个概念“卷积”的计算过程。

连载2:卷积的表达式

将多项式转换成矩阵形式
\[
x+1 -> [1,1]\x^2+2x+5 -> [1,2,5]\x^3+3x^2+7x+5=[1,1]*[1,2,5]=[1,3,7,5]
\]
其中卷积(*)的运算如下:
\(c(n)=a(n)*b(n)=\sum_{k=0}^n{a(k)b(n-k)},n=0~(n1+n2)\)
其中n1是a(n)的系数总个数,n2是b(n)的系数总个数

Python计算卷积

import numpy as np
np.convolve([1,1],[1,2,5]) #上例,result:[1, 3, 7, 5]
# 杨辉三角,输入行数,输出对应行的值
def pascal_triangle(n):
    if n == 0:
        return 1
    elif n == 1:
        return [1,1]
    else:
        return np.convolve([1,1],pascal_triangle(n-1))
# test code
for i in range(0,7):
    print(pascal_triangle(i))

# 杨辉三角,迭代器形式
def triangles():
  nlist=[1]
  while True:
    yield nlist
    nlist.append(0)
    nlist = [nlist[i] + nlist[i-1] for i in range(len(nlist))]
# test code
tr = triangles()
for i in range(0,7):
    print(next(tr))

原文地址:https://www.cnblogs.com/WindyZ/p/11220682.html

时间: 2024-11-01 20:28:20

深入浅出通信原理(Python代码版)的相关文章

深入浅出通信原理笔记

论坛上的帖子连载-深入浅出通信原理是比较不错的技术贴,地址http://bbs.c114.net/forum.php?mod=viewthread&tid=394879&page=0 摘录一下比较有收获的几个部分 1 作者证明,卷积其实代表的就是求两个多项式相乘之后的系数,如果能把信号表示成多项式的形式,那么信号的相乘其实就可以表示成多项式的系数卷积.那能不能呢?答案是肯定的.而且如果x^n最好和n*w0有关,那这样表达式就能表示频域的某些特点.取x=e^j*w*t那么x^n=e^j*n*

皮尔逊相关系数的计算(python代码版)

from math import sqrt def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] sumofab+=temp return sumofab def corrcoef(x,y): n=len(x) #求和 sum1=sum(x) sum2=sum(y) #求乘积之和 sumofxy=multipl(x,y) #求平方和 sumofx2 = sum([pow(i,2) for i in x]) sum

paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例

#---目标 1. en vs enPHati 2.en vs enPhAtiSmp 3.cn vs enPHati 4. cn vs enPhAtiSmp #两个方法,一个获得enPhAtied代码,一个获得哪的smp版本.. def convert2atiEnPnNoSpltr(old): a=old.replace("@", "").replace("-", "") return a def Smp(old): &quo

catboost原理以及Python代码

原论文:    http://learningsys.org/nips17/assets/papers/paper_11.pdf catboost原理: One-hot编码可以在预处理阶段或在训练期间完成.后者对于训练时间而言能更有效地执行,并在Catboost中执行. 类别特征: 为了减少过拟合以及使用整个数据集进行训练,Catboost使用更有效的策略. 1.对输入的观察值的集合进行随机排列,生成多个随机排列: 2.给定一个序列,对于每个例子,对于相同类别的例子我们计算平均样本值: 3.使用

深度学习原理详解及Python代码实现

深度学习框架如Tensorflow和Pytorch等为用户提供了可供调用的API,但也隐藏了深度学习底层的实现细节. 为方便大家更加深入地理解深度学习原理并了解其底层实现方法,特此推出了<课程深度学习原理详解及Python代码实现>.期望能"掀起你的盖头来,让我看看你的模样",为深度学习进一步的优化和创新打下根基. 课程链接:https://edu.51cto.com/course/21426.html 本课程详细讲解深度学习原理并进行Python代码实现.课程内容涵盖感知

入门:《教孩子学编程 Python语言版》中英文PDF+代码

工作需要看过这本书,书中以turtle绘图展开,吸引学生兴趣,引入点非常好,安利也比较有意思好理解,但是有部分案例不太符合中国情况,还需要再改一改,总之是一本学习编程的好书 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.这门强大的语言如今在大学和Google.IBM等大型技术公司广泛使用.<教孩子学编程 Python语言版>是一本父母和老师教孩子使用Python进行基础程序设计和解决问题的入门图书.书通过科学合理的结构.通俗易懂的文字.活泼有趣的图示,帮助孩子学习计算机的

Python代码样例列表

├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│      NFA引擎,Python正则测试工具应用示例.py│      Python datetime计时程序的实现方法.py│      python du熊学斐波那契实现.py│      python lambda实现求素数的简短代码.py│      Python localtime()方法计算今天是一年中第几周.py│      Python math方法算24点代码详解.py│      Pyth

Socket通信原理简介

Socket通信原理简介 字数1011 阅读1766 评论2 喜欢11 何谓socket 计算机,顾名思义即是用来做计算.因而也需要输入和输出,输入需要计算的条件,输出计算结果.这些输入输出可以抽象为I/O(input output). Unix的计算机处理IO是通过文件的抽象.计算机不同的进程之间也有输入输出,也就是通信.因此这这个通信也是通过文件的抽象文件描述符来进行. 在同一台计算机,进程之间可以这样通信,如果是不同的计算机呢?网络上不同的计算机,也可以通信,那么就得使用网络套接字(soc

算法改变世界——《算法之美——隐匿在数据结构背后的原理(C++版)》

所谓算法,就是隐匿在数据结构后背后的原理,在开发中好的算法可以降低时间复杂度提升可复用性.<算法之美--隐匿在数据结构背后的原理(C++版)>一书围绕算法与数据结构这个话题,用汉诺塔问题和八皇后问题等22个经典算法问题循序渐进.深入浅出地介绍了现代计算机技术中常用的45个经典算法.读后让人醍醐灌顶,茅塞顿开,并感觉相见恨晚. 这本书的第六章<递归--老和尚讲故事>写的很好,首先介绍了递归的概念,然后用汉诺塔问题,传染病问题和八皇后问题分别阐述并实践了递归的两种思想--分治和回溯.