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


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

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

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

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

import sympyx = 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 npnp.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 codetr = triangles()for i in range(0,7):    print(next(tr))

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

评论关闭