亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ofdm+qam.py

?? it is a OFDM and QAM with dynamically X-QAM mdoulation scheme.
?? PY
字號:


import sys, os, time
import numpy as num
import pylab as py

# simulation parameters

N           = 1024   # number of subcarriers
L           = 32    # length of cyclic prefix
N_OFDM      = 10000   # number of OFDM symbols
N_sub_ch    = 100   # plot constellation of this subchannel

ph4_rot = num.array([1, 1j, -1, -1j])

qam4_1q = num.array([1+1j])

qam16_1q = num.array([1+1j, 3+1j, 1+3j, 3+3j])

qam32_1q = num.array([1+1j, 3+1j, 5+1j, 1+3j, 3+3j, 5+3j, 1+5j, 3+5j])

qam64_1q = num.array([1+1j, 3+1j, 5+1j, 7+1j,\
                      1+3j, 3+3j, 5+3j, 7+3j,\
                      1+5j, 3+5j, 5+5j, 7+5j,\
                      1+7j, 3+7j, 5+7j, 7+7j])

qam128_1q = num.array([1+1j,  3+1j,  5+1j,  7+1j, 9+1j, 11+1j,\
                       1+3j,  3+3j,  5+3j,  7+3j, 9+3j, 11+3j,\
                       1+5j,  3+5j,  5+5j,  7+5j, 9+5j, 11+5j,
                       1+7j,  3+7j,  5+7j,  7+7j, 9+7j, 11+7j,\
                       1+9j,  3+9j,  5+9j,  7+9j,\
                       1+11j, 3+11j, 5+11j, 7+11j ])

qam256_1q = num.array([1+1j,  3+1j,  5+1j,  7+1j,  9+1j,  11+1j,  13+1j,  15+1j,\
                       1+3j,  3+3j,  5+3j,  7+3j,  9+3j,  11+3j,  13+3j,  15+3j,\
                       1+5j,  3+5j,  5+5j,  7+5j,  9+5j,  11+5j,  13+5j,  15+5j,\
                       1+7j,  3+7j,  5+7j,  7+7j,  9+7j,  11+7j,  13+7j,  15+7j,\
                       1+9j,  3+9j,  5+9j,  7+9j,  9+9j,  11+9j,  13+9j,  15+9j,\
                       1+11j, 3+11j, 5+11j, 7+11j, 9+11j, 11+11j, 13+11j, 15+11j,\
                       1+13j, 3+13j, 5+13j, 7+13j, 9+13j, 11+13j, 13+13j, 15+13j,\
                       1+15j, 3+15j, 5+15j, 7+15j, 9+15j, 11+15j, 13+15j, 15+15j])


def Source4QAM(block_len):
    """
    block_len  : nr of 4-QAM symbols in block
                
    returns    
    
    qam4_array : complex numpy array with block_len 4 QAM symbols
    """
    # random index vector for quadrant selection
    iquad = num.random.randint(0, 4, block_len)
    
    # random index vector for selection of symbol(s) from 1st quadrant
    isymbol = num.zeros(block_len, 'L') # with 4-QAM only 1 symbol per quadrant
    
    qam4_array = ph4_rot[iquad] * qam4_1q[isymbol]
    return qam4_array

def Source16QAM(block_len):
    """
    block_len  : nr of 16-QAM symbols in block
                
    returns    
    
    qam16_array : complex numpy array with block_len 16 QAM symbols
    """
    # random index vector for quadrant selection
    iquad = num.random.randint(0, 4, block_len)
    
    # random index vector for selection of symbol(s) from 1st quadrant
    N_symbols = len(qam16_1q) # nr of symbols in quadrant
    isymbol   = num.random.randint(0, N_symbols, block_len)
    
    qam16_array = ph4_rot[iquad] * qam16_1q[isymbol]
    return qam16_array

def Source32QAM(block_len):
    """
    block_len  : nr of 32-QAM symbols in block
                
    returns    
    
    qam32_array : complex numpy array with block_len 32 QAM symbols
    """
    # random index vector for quadrant selection
    iquad = num.random.randint(0, 4, block_len)
    
    # random index vector for selection of symbol(s) from 1st quadrant
    N_symbols = len(qam32_1q) # nr of symbols in quadrant
    isymbol   = num.random.randint(0, N_symbols, block_len)
    
    qam32_array = ph4_rot[iquad] * qam32_1q[isymbol]
    return qam32_array

def Source64QAM(block_len):
    """
    block_len  : nr of 64-QAM symbols in block
                
    returns    
    
    qam64_array : complex numpy array with block_len 64 QAM symbols
    """
    # random index vector for quadrant selection
    iquad = num.random.randint(0, 4, block_len)
    
    # random index vector for selection of symbol(s) from 1st quadrant
    N_symbols = len(qam64_1q)  # nr of symbols in quadrant
    isymbol   = num.random.randint(0, N_symbols, block_len)
    
    qam64_array = ph4_rot[iquad] * qam64_1q[isymbol]
    return qam64_array

def Source128QAM(block_len):
    """
    block_len  : nr of 128-QAM symbols in block
                
    returns    
    
    qam128_array : complex numpy array with block_len 128 QAM symbols
    """
    # random index vector for quadrant selection
    iquad = num.random.randint(0, 4, block_len)
    
    # random index vector for selection of symbol(s) from 1st quadrant
    N_symbols = len(qam128_1q) # nr of symbols in quadrant
    isymbol   = num.random.randint(0, N_symbols, block_len)
    
    qam128_array = ph4_rot[iquad] * qam128_1q[isymbol]
    return qam128_array

def Source256QAM(block_len):
    """
    block_len  : nr of 256-QAM symbols in block
                
    returns    
    
    qam256_array : complex numpy array with block_len 256 QAM symbols
    """
    # random index vector for quadrant selection
    iquad = num.random.randint(0, 4, block_len)
    
    # random index vector for selection of symbol(s) from 1st quadrant
    N_symbols = len(qam256_1q) # nr of symbols in quadrant
    isymbol   = num.random.randint(0, N_symbols, block_len)
    
    qam256_array = ph4_rot[iquad] * qam256_1q[isymbol]
    return qam256_array

#--------------------------------------------------------------------------------------------------------


# normalised frequency offset (df/fs)
f_offset_n = 1.0e-4


#g_channel_impulse = num.array([1, 0.1, -.1, 0.1, .3, -0.04])
g_channel_impulse = num.array([1, 0.0, 0.0, 0.0, .0, 0.0])

G_channel = num.fft.fft(g_channel_impulse, N)

M = len(g_channel_impulse)

overlap_old = num.zeros(M-1)

#error_total = []

sub_channel = num.zeros(N_OFDM, 'D')

t_start = time.clock()
for n_symbol in range(N_OFDM):
    
    # block of 4-QAM symbols
    qam_vec1 = Source4QAM(N/4)
    qam_vec2 = Source4QAM(N/4)
    qam_vec3 = Source4QAM(N/4)
    qam_vec4 = Source4QAM(N/4)
    
    qam_vec = num.concatenate( (qam_vec1, qam_vec2, qam_vec3, qam_vec4) )
    
    # useful part of OFDM symbol (N subcarriers)
    y_vec = N*num.fft.ifft(qam_vec)  # factor N compensates for the internal scaling of function ifft()
    
    # extract cyclic prefix
    cyclic_prefix = y_vec[N-L:]
    
    # prepend cyclic prefix to form the full OFDM symbol
    ofdm_vec = num.concatenate( (cyclic_prefix, y_vec) )
    
    # the channel ...
    r_vec = num.convolve(ofdm_vec, g_channel_impulse)    
    
    # split into vectors r1_vec, r2_vec 
    r1_vec        = r_vec[0:N+L]
    r2_vec        = r_vec[N+L:]
    
    # correct for channel output of last OFDM-symbol
    r1_vec[0:M-1] = r1_vec[0:M-1] + overlap_old
    
    # save overlap part for next ..
    overlap_old = r2_vec
    
    # frequency offset of receiver
    fo_vec = num.exp(2.j *num.pi * f_offset_n * num.arange(N+L)) 
    
    # apply frequency offset
    r1_vec_fo = r1_vec * fo_vec
    
    # discard cyclic prefix part
    ofdm_rec = r1_vec_fo[L:]   # should have N samples otherwise wrong
      
    # transform back
    # correct for scaling
    # correct for frequency dependent gain due to channel distortion
    
    data_rec = (1./ N) * num.fft.fft(ofdm_rec) / G_channel
    
    # deviation of received / sent data symbols
    error = data_rec - qam_vec
    
    # retrieve data of sub-channel Nr. N_sub_ch
    sub_channel[n_symbol] = data_rec[N_sub_ch]
    

# record elapsed time    
t_stop = time.clock()
t_elapsed = t_stop - t_start

print "time elapsed = %10.2f s" % t_elapsed

# some figures ...

# scatter plot of sub-channel Nr. N_sub_ch
py.figure()
py.scatter(sub_channel.real, sub_channel.imag, s=1, c='b')
py.axis('equal')
py.xlabel('I')
py.ylabel('Q')
py.title("constellation of sub-carrier Nr = %d  # N = %d" % (N_sub_ch, N) )
py.grid(True)
py.show()

    
    
    
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产一区二区三区四区小说 | av影院午夜一区| 欧美韩日一区二区三区| 91精品一区二区三区在线观看| 高清不卡一区二区在线| 蜜臀久久99精品久久久久久9| 精品亚洲porn| 秋霞电影网一区二区| 一区二区三区在线观看国产| 日韩黄色小视频| 亚洲福中文字幕伊人影院| 亚洲色图在线视频| 日本不卡的三区四区五区| 成人久久视频在线观看| 欧美视频一区二| 国产日韩欧美综合一区| 午夜私人影院久久久久| 床上的激情91.| 日韩你懂的在线播放| 亚洲欧美另类综合偷拍| 国产酒店精品激情| 欧美日韩三级一区| 欧美精品色一区二区三区| 国产亚洲精品7777| 日本一区二区电影| 国产精品私房写真福利视频| 国产亚洲短视频| 国产女人aaa级久久久级 | 国产日产欧美一区二区视频| 日韩三级视频在线看| 一区二区久久久久| 高清日韩电视剧大全免费| 3atv一区二区三区| 性做久久久久久久久| 日韩综合在线视频| 国产成人亚洲综合a∨猫咪| 91亚洲国产成人精品一区二三| 精品视频色一区| 久久久噜噜噜久久人人看| 美日韩黄色大片| 久久香蕉国产线看观看99| 国产最新精品免费| 欧美午夜精品电影| 国产欧美综合在线观看第十页| 亚洲黄一区二区三区| 91福利视频久久久久| 亚洲一级二级在线| 日韩一区二区在线观看| 亚洲欧美在线高清| 在线一区二区三区做爰视频网站| 欧美电视剧免费观看| 国产乱码精品1区2区3区| 欧美国产精品中文字幕| 一本久道中文字幕精品亚洲嫩 | 国产99久久久国产精品| 欧美日韩免费在线视频| 青草av.久久免费一区| 国产性色一区二区| 色婷婷久久综合| 六月丁香综合在线视频| 久久精品一区二区| 在线观看精品一区| 国产精品久久久久天堂| 欧美亚洲一区二区三区四区| 国产精品久久国产精麻豆99网站| 99久久久久免费精品国产 | 欧美国产精品久久| 91国模大尺度私拍在线视频| 蜜桃精品视频在线观看| 色婷婷综合久色| 久久精品999| 欧美一级国产精品| 不卡区在线中文字幕| 日本亚洲视频在线| 4438x亚洲最大成人网| 国产69精品久久99不卡| 日韩极品在线观看| 欧美日韩激情在线| 国产成人8x视频一区二区| 久久久精品黄色| 欧美日韩精品一二三区| 国产成人免费在线| 国产精品天美传媒| 欧美成人性战久久| 日韩成人伦理电影在线观看| 国产偷国产偷亚洲高清人白洁| 国产真实乱偷精品视频免| 亚洲国产毛片aaaaa无费看| 欧美亚洲国产一区二区三区| 国产乱人伦偷精品视频免下载| 午夜精品aaa| 亚洲激情五月婷婷| 中文字幕一区二区不卡| 国产亚洲精久久久久久| 99视频超级精品| 一区二区三区在线观看动漫| 久久精品一二三| 色综合久久综合中文综合网| 一区二区激情视频| 中文字幕五月欧美| 欧美日韩三级视频| 在线一区二区三区做爰视频网站| 成人一区二区三区视频| 亚洲一区二区三区小说| 欧美日韩成人在线一区| 久久99久久精品欧美| 五月激情丁香一区二区三区| 国产精品毛片大码女人| 日韩精品一区二区三区蜜臀 | 丁香亚洲综合激情啪啪综合| 一色桃子久久精品亚洲| 日韩欧美一区二区视频| 国产精品国产三级国产普通话蜜臀 | 成人国产在线观看| 欧美在线观看禁18| 不卡视频在线看| kk眼镜猥琐国模调教系列一区二区| 精品在线一区二区| 欧美日韩aaaaaa| 国产不卡视频一区| 亚洲国产成人porn| 亚洲v中文字幕| 三级亚洲高清视频| 久久精品噜噜噜成人av农村| 国产午夜精品一区二区三区嫩草| 久久久久久久国产精品影院| 久久老女人爱爱| 欧美国产一区在线| 亚洲免费观看高清完整版在线观看 | 色婷婷激情久久| 久久99国产精品免费网站| 激情文学综合网| 成人综合激情网| 色哟哟一区二区在线观看| 欧美性极品少妇| 日韩欧美电影在线| 色狠狠桃花综合| 欧美一级欧美三级在线观看| 欧美mv日韩mv| 欧美日韩一级片在线观看| 日韩一区二区精品| 色综合欧美在线视频区| 国产成人在线观看免费网站| 日韩精品午夜视频| 亚洲国产精品久久一线不卡| 日产欧产美韩系列久久99| 国产一区二区调教| 日本道免费精品一区二区三区| 国产激情一区二区三区四区 | 久久成人18免费观看| 成人v精品蜜桃久久一区| 久久99久久久久久久久久久| 成人性色生活片| 在线电影国产精品| 欧美二区三区的天堂| 国产日韩欧美一区二区三区乱码| 亚洲人成人一区二区在线观看| 免费人成网站在线观看欧美高清| 成人免费黄色在线| 日韩精品一区二区三区中文不卡 | 91精品国产综合久久精品麻豆 | 国内欧美视频一区二区 | 日韩精品最新网址| 日韩美女主播在线视频一区二区三区| 欧美日韩精品三区| 欧美国产精品v| 麻豆精品在线观看| 欧美亚洲另类激情小说| 欧美亚洲综合在线| 中文字幕在线一区免费| 激情综合五月婷婷| 91麻豆精品国产91久久久资源速度| 国产精品久久久久久妇女6080| 久久电影网电视剧免费观看| 欧美性猛交xxxx黑人交| 欧美一区二区三区喷汁尤物| 18涩涩午夜精品.www| 亚洲欧美欧美一区二区三区| 国产麻豆日韩欧美久久| 日韩欧美一二区| 午夜视频在线观看一区二区| 日本欧美在线观看| 国产最新精品精品你懂的| 欧美日韩一区二区三区高清| 欧美一级一区二区| 久久这里都是精品| 日本最新不卡在线| 日本不卡一区二区| 99视频精品免费视频| 欧美色手机在线观看| 亚洲色欲色欲www| 不卡av在线免费观看| 99久久精品免费观看| 在线观看一区二区视频| 欧美色精品在线视频| 日韩女优视频免费观看| 免费美女久久99| 欧美大片一区二区| 精品一区在线看| 久久亚洲二区三区|