python通信原理实验报告_深入浅出通信原理(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))

标签:连载,Python,多项式,代码,深入浅出,通信,卷积,相乘,nlist

来源: https://www.cnblogs.com/WindyZ/p/11220682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值