素人の言語でのコミュニケーション論(Pythonソース版)

Pythonコードの素人の言語バージョンでのコミュニケーション論

原理はする、通信Aijunの印象的な努力を理解しやすい家に人を伝えるだけで使用されるトレーニングノートのPythonコードのために、ここで、シリアル
陳さん私は多項式の乗算からスタートシリアル、ステップバイステップでは、コンボリューションにつながる、フーリエ級数展開、回転ベクトル、3次元スペクトル、IQ変調、デジタル変調及び通信理論の知識の一連

シリアル1:多項式の乗算からスタート

\ [(X + 1)(x ^ 2 + 5 + 2×)= X ^ 3 + 3×^ 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 + 3×^ 2 + 7X + 5 = [1,1] * [1,2,5] = [1,3,7,5] \]
前記次のようにコンボリューション(*)操作である:
\(C(N)=(N-)B×(N- )= \ sum_ {k = 0
} ^ N {(k)をB(NK)}、N = 0〜(N1 + N2)\) ここで、n1と(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))

おすすめ

転載: www.cnblogs.com/WindyZ/p/11220682.html