一応ASK波形も出してみる。正弦波に伸長したシンボルを掛けているだけ...
- # 変数クリア
- from IPython import get_ipython
- get_ipython().magic('reset -sf')
- import matplotlib.pyplot as plt
- import numpy as np
- import scipy.signal as signal
- # シンボル列を引き延ばす
- def extend_symbol_to_simulation_sampling_rate(symbols,t_symbol,t_simulation_sampling):
- # シンボル数
- size_of_symbols=symbols.size
- # 最後のシンボルが終わる時間
- end_time=size_of_symbols*t_symbol
- # 計算タイミング
- t=np.arange(0,end_time,t_simulation_sampling)
- # 各シンボルの開始(終了)時間
- t_periods_of_symbols=np.append(0,np.arange(1,size_of_symbols,1)*t_symbol)
- # 結果データ領域確保
- ex_symbols=np.zeros_like(t)
- # 先頭データは入れておく
- ex_symbols[0]=symbols[0]
- # 各シンボルについて、その期間のインデックスを取得し、データを入れ込む
- for i in range(0,size_of_symbols):
- ex_symbols[np.where(t>t_periods_of_symbols[i])]=symbols[i]
- return ex_symbols,end_time
- # よく使う変数
- 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
- phase_initial=45*deg2rad # 搬送波の初期位相(何でもいい) in rad
- symbols_in_base=signal.max_len_seq(7)[0] # シンボル
- # 後で使う変数
- t_sym=1/f_sym
- t_samp_simulation=1/f_samp_simulation
- omega_carrier=twopi*f_carrier
- # シンボルを計算用に拡張
- [symbols,t_end]=extend_symbol_to_simulation_sampling_rate(symbols_in_base,t_sym,t_samp_simulation)
- # 計算するタイミング
- t=np.arange(0,t_end,t_samp_simulation)
- # 波形生成
- amp_t=np.exp(1j*omega_carrier*t)*symbols
- # 波形保存
- np.save('output/ask_o_t',t)
- np.save('output/ask_o_amp_t',amp_t)
- # プロット
- fig=plt.figure(figsize=(12,12))
- fig.add_subplot(2,1,1)
- plt.plot(t,amp_t)
- fig.add_subplot(2,1,2)
- plt.plot(t,amp_t)
- plt.xlim(t_sym*7.95,t_sym*8.05) # ちょうどシンボルの変わり目を表示
コメントをお書きください