LoginSignup
1
0

滑らかなNRZ信号の作成方法

Last updated at Posted at 2024-03-24

現実に近い信号を作成するために、NRZ(Non Return to Zero)信号の1シンボルの信号を表す基本パルスを作成します。その関数を式に示します。このような式を用いることで、立ち上がりと立下りが滑らかな現実的な信号を作成することが出来ます。

F(t)=1/2(tanh(t/A) -tanh((t-T)/A) 

このとき、Tは1シンボルあたりの時間幅、Aはシンボルの立ち上がりの傾きを定める定数、tは時間を表しています。青色がtanh (t/A) 、赤色がtanh (t-T/A) 、黒色が青色と赤色の信号の差です。

    import numpy as np
    import matplotlib.pyplot as plt
    import math

    def main():    
    ######################パラメータ######################
    N = 2**10 #データ点数
    syps = 28e9 #シンボル速度 baud
    T = 1/syps #半値幅
    A = 0.9*math.pow(10, -12) # 立ち上がりの傾き
    trange = 5.714e-10    #全時間幅
    dt = trange/N
    #####################################################
    
    ########################軸設定########################
    t = np.linspace(-trange,trange,N) #グラフ用
    t_ori = np.linspace(-trange,trange,N) #計算用
    time = t
    #####################################################
    
    #####################信号波形作成#####################
    t_ori += T #半値幅
    signal = np.zeros(N, dtype=np.float64) 
    
    ###信号生成
    t_ori -= T #半値幅
    signal_tanh = np.tanh(t_ori / A) 
    signal_phase = np.tanh((t_ori - T) / A ) 
    result = signal_tanh - signal_phase 
    
    ######################グラフ作成######################
    plt.rcParams["font.size"] = 14
    plt.figure('signal_wave')
    plt.subplot(111)
    plt.plot(time, result, color = 'black') 
    plt.plot(time, signal_tanh, color = 'blue')
    plt.plot(time, signal_phase, color = 'red')
    plt.xlabel("Time[ns]")
    plt.ylabel("Power")
    plt.grid()
    plt.show()
    #####################################################
    
    return 0
    
    if __name__ == "__main__":
    main()
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0