· 

CPFSKのスペクトラムを見る

CPFSKのスペクトラムを見る。

まず、「numpyでCPFSK再び」に記載の条件

周波数偏移=1MHz

シンボルレート=1MSym/s

pythonコードはASKの時とほぼ同じ(ファイル名だけが違う)。

  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. import scipy.signal as signal
  8.  
  9. # よく使う変数
  10. pi=np.pi
  11. deg2rad=pi/180.0
  12. twopi=2*pi
  13.  
  14. # 設定
  15. f_carrier=433.92e6            # 搬送波周波数 in Hz
  16. f_sym=1e6                 # シンボルレート in Hz
  17. f_samp_simulation=f_carrier*10     # 計算のサンプリングレート in Hz
  18.  
  19. # 後で使う変数
  20. t_sym=1/f_sym
  21. t_samp_simulation=1/f_samp_simulation
  22. omega_carrier=twopi*f_carrier
  23.  
  24. # 生成して保存しておいた波形を読み出し
  25. t=np.load('output/fsk_o_t.npy')
  26. amp_t=np.load('output/fsk_o_amp_t.npy')
  27. number_of_samples=t.size
  28.  
  29. amp_f=np.fft.fft(amp_t)/(number_of_samples/2)
  30. #amp_f=np.abs(amp_f)
  31. amp_f=20*np.log10(np.abs(amp_f))
  32. freq=np.fft.fftfreq(number_of_samples,t_samp_simulation)
  33.  
  34. # プロット
  35. fig=plt.figure()
  36. fig.add_subplot(2,1,1)
  37. plt.plot(freq[0:int(number_of_samples/2)]/1e6,amp_f[0:int(number_of_samples/2)])
  38. plt.xlim(f_carrier*0.995/1e6,f_carrier*1.005/1e6)
  39. plt.ylim(-50,0)

 

占有帯域幅が広い(多分)。

調べてみると、

変調指数m=|f1-f2|T=0.5

が、検波効率が良くて、最も小さい変調指数となり、(最もではないが、)狭い占有帯域幅となるらしい。

で、それをMSKという。