2020年7月22日水曜日

パルスで直交復調(6) -こんどこそ1-

今度はマジでパルす

そもそもの式は

(1)f(t)=a0+n=1{ancos(2πnTt)+bnsin(2πnTt)}

めんどくさいので、答えだけ

(2)a0=tpT
(3)an=2πnsin(πnTtp)
(4)f(t)=tpT+n=1{2πnsin(πnTtp)cos(2πnTt)}

numpyで確認

  1. # 変数クリア
  2. from IPython import get_ipython
  3. get_ipython().magic('reset -sf')
  4.   
  5. import matplotlib.pyplot as plt
  6. import numpy as np
  7.   
  8. # よく使う変数
  9. pi=np.pi
  10.  
  11. # 設定
  12. T=1
  13. tp=0.001 
  14. repeat_num=20
  15.  
  16. # 計算する範囲と刻みで計算ポイントを作る
  17. t=np.arange(-T,T,0.00001)
  18.   
  19. # 式に値を入れて結果を得る
  20. a=np.zeros(repeat_num)
  21. f_t=np.zeros((repeat_num,t.size))
  22. a[0]=tp/T
  23. f_t[0,:]=np.ones_like(t)*a[0]
  24. for n in range(1,repeat_num):
  25.     a[n]=2/n/pi*(np.sin(n*pi/T*tp))
  26.     f_t[n,:]=f_t[n-1,:]+a[n]*np.cos(2*pi*n/T*t)
  27.   
  28. # プロット
  29. fig=plt.figure()
  30. plt.plot(t,f_t[1],label="n=1")
  31. plt.plot(t,f_t[2],label="n=1,2")
  32. plt.plot(t,f_t[3],label="n=1,2,3")
  33. plt.plot(t,f_t[4],label="n=1,2,3,4")
  34. plt.plot(t,f_t[5],label="n=1,...,5")
  35. plt.legend()
  36.   
  37. fig=plt.figure()
  38. plt.plot(t,f_t[repeat_num-1],label="n=1,...,"+str(repeat_num))
  39. plt.legend()

(4)でtの代わりにt-T/4と書けばよい。

答えがきれいにならないので、もうこれ以上やらない。

(5)f(t)=tpT+n=1{2πnsin(πnTtp)cos(2πnT(tT4))}

numpyで確認

  1. # 変数クリア
  2. from IPython import get_ipython
  3. get_ipython().magic('reset -sf')
  4.   
  5. import matplotlib.pyplot as plt
  6. import numpy as np
  7.   
  8. # よく使う変数
  9. pi=np.pi
  10.   
  11. # 設定
  12. T=1
  13. tp=0.001 
  14. repeat_num=20
  15.  
  16. # 計算する範囲と刻みで計算ポイントを作る
  17. t=np.arange(-T,T,0.00001)
  18.   
  19. # 式に値を入れて結果を得る
  20. a=np.zeros(repeat_num)
  21. f_t=np.zeros((repeat_num,t.size))
  22. a[0]=tp/T
  23. f_t[0,:]=np.ones_like(t)*a[0]
  24. for n in range(1,repeat_num):
  25.     a[n]=2/n/pi*(np.sin(n*pi/T*tp))
  26.     f_t[n,:]=f_t[n-1,:]+a[n]*np.cos(2*pi*n/T*(t-T/4))
  27.   
  28. # プロット
  29. fig=plt.figure()
  30. plt.plot(t,f_t[1],label="n=1")
  31. plt.plot(t,f_t[2],label="n=1,2")
  32. plt.plot(t,f_t[3],label="n=1,2,3")
  33. plt.plot(t,f_t[4],label="n=1,2,3,4")
  34. plt.plot(t,f_t[5],label="n=1,...,5")
  35. plt.legend()
  36.   
  37. fig=plt.figure()
  38. plt.plot(t,f_t[repeat_num-1],label="n=1,...,"+str(repeat_num))
  39. plt.legend()

それらしい結果になりました。

 

で、一番低い周波数成分が、1/Tになっているので、矩形波と同じように、パルスで直交復調してもよいってことでしょ。

0 件のコメント:

コメントを投稿