- # 変数クリア
- from IPython import get_ipython
- get_ipython().magic('reset -sf')
- import matplotlib.pyplot as plt
- import numpy as np
- import scipy.signal as signal
- # よく使う変数
- pi=np.pi
- deg2rad=pi/180.0
- twopi=2*pi
- # 設定
- f_carrier=433.92e6 # 搬送波周波数 in Hz
- f_sym=1e6 # シンボルレート in Hz
- f_samp_simulation=f_carrier*10 # 計算のサンプリングレート in Hz
- # 後で使う変数
- t_sym=1/f_sym
- t_samp_simulation=1/f_samp_simulation
- omega_carrier=twopi*f_carrier
- # 生成して保存しておいた波形を読み出し
- t=np.load('output/ask_o_t.npy')
- amp_t=np.load('output/ask_o_amp_t.npy')
- number_of_samples=t.size
- # fftする
- amp_f=np.fft.fft(amp_t)/(number_of_samples/2)
- amp_f=20*np.log10(np.abs(amp_f)) #1Vrmsを0dBとしてdB表示(になっているんじゃないかと思う)
- freq=np.fft.fftfreq(number_of_samples,t_samp_simulation)
- # プロット
- fig=plt.figure()
- fig.add_subplot(2,1,1)
- plt.plot(freq[0:int(number_of_samples/2)]/1e6,amp_f[0:int(number_of_samples/2)])
- plt.xlim(f_carrier*0.995/1e6,f_carrier*1.005/1e6)
- plt.ylim(-50,0)
ASK波形生成時に
- symbols_in_base[0::2]=1
- symbols_in_base[1::2]=0
として、
1,0,1,0,1,...
というコードで生成した場合。
433.92+/-0.5MHz, +/-1.5MHz, +/-2.5MHz, ...にピークが出ます。1MSym/sで1,0,1,0,1,...なのでシンボル周期が0.5MHzだから...
周期Tの矩形波をフーリエ級数展開すると
f, 3f, 5f, 7f, ... (f=1/T)
の成分があって、あとは三角関数の積和の公式から...そうなるわな。
PN符号で生成した場合。
分散されます...そりゃそうだ。
コメントをお書きください