def main():
    nrx=3
    # Create a tx
    ntx=3
    ta = None
    #ta = SampleRate()
    transmitter = Transmitter(ntx,ta)
    # Create a channel
    
    chan = TraceChan()
    num_chans=1
    length = chan.create_chan(transmitter.Ntx,nrx)

    #ta = OracleRA(chan)
    #transmitter.set_transmit_ra(ta)
    #receiver = Receiver(MaxTputRA(),nrx)
    #receiver = Receiver(MinEngRA(),nrx)
    receiver = Receiver(EngTputRA(),nrx)
    #receiver = Receiver(EffSnrRA(),nrx)
    #receiver = Receiver(RxSampleRate(),nrx)
    #receiver = Receiver(RxOracle(),nrx)

    #length =10
    for num in range(0,length):
        pkt = transmitter.transmit_pkt()
        chan.apply_channel(pkt)
        #print chan.curr_chan
        #print pkt
        
        # Create receiver
        receiver.receive_pkt(pkt)
        ack_pkt = receiver.get_feedback_pkt()
        
        transmitter.process_ack(ack_pkt)
def main():
    if len(sys.argv) == 6:
        filename = sys.argv[1]
        card_type = sys.argv[2]
        energy_constraint = sys.argv[3]
        chan_pred = eval(sys.argv[4])
        increment = eval(sys.argv[5])
        print "filename: " + str(filename)
    else:
        print "Correct usage: python simulate_maxtput.py trace_file card_type tx/rx pred(True/False)"
        sys.exit(1)

    nrx = 3
    # Create a tx
    ntx = 3
    ta = None
    transmitter = Transmitter(ntx, ta)
    # Create a channel

    chan = TraceChan(filename)
    num_chans = 1
    length = chan.create_chan(transmitter.Ntx, nrx)

    extname = (
        filename.split("/")[-1].split(".")[0]
        + "_"
        + card_type
        + "_"
        + energy_constraint
        + "_pred"
        + str(chan_pred)
        + "_inc"
        + str(increment)
    )
    # print extname
    receiver = PPrReceiver(PPrMinEngRA(card_type, energy_constraint, chan_pred), nrx, extname)

    if length > 10000:
        length = 10000
    # length = 2

    for num in range(0, length):
        itr_tic = time.clock()
        pkt = transmitter.transmit_pkt()
        chan.apply_channel(pkt)
        # print chan.curr_chan
        # print pkt

        # Create receiver
        receiver.receive_pkt(pkt)
        ack_pkt = receiver.get_feedback_pkt()

        transmitter.process_ack(ack_pkt)
        itr_toc = time.clock()
def main():

    if len(sys.argv) == 5:
       filename = sys.argv[1]
       card_type = sys.argv[2]
       energy_constraint = sys.argv[3]
       chan_pred = eval(sys.argv[4])
       increment = 1
       print "filename: "+str(filename)
    elif len(sys.argv) == 6:
       filename = sys.argv[1]
       card_type = sys.argv[2]
       energy_constraint = sys.argv[3]
       chan_pred = False
       increment = eval(sys.argv[5])
       print "filename: "+str(filename)
    else:
        print "Correct usage: python simulate_effsnr.py trace_file card_type tx/rx pred(True/False)"
        sys.exit(1)

    nrx=3
    # Create a tx
    ntx=3
    ta = None
    transmitter = Transmitter(ntx,ta)
    # Create a channel
    
    chan = TraceChan(filename, increment)
    num_chans=1
    length = chan.create_chan(transmitter.Ntx,nrx)
 
    ta = OracleEffSnrRA(card_type,energy_constraint,chan)
    transmitter.set_transmit_ra(ta)
    extname=ta.name+"_"+filename.split('/')[-1].split('.')[0]+"_"+card_type+"_"+energy_constraint+"_pred"+str(chan_pred)+"_inc"+str(increment)
    receiver = Receiver(RxOracle(card_type,energy_constraint),nrx,extname)

    if length > 10000: length = 10000
    #length =10
    for num in range(0,length):
        pkt = transmitter.transmit_pkt()
        chan.apply_channel(pkt)
        #print chan.curr_chan
        #print pkt
        
        # Create receiver
        receiver.receive_pkt(pkt)
        ack_pkt = receiver.get_feedback_pkt()
        
        transmitter.process_ack(ack_pkt)
def main():
    if len(sys.argv) == 7:
       filename = sys.argv[1]
       card_type = sys.argv[2]
       energy_constraint = sys.argv[3]
       chan_pred = eval(sys.argv[4])
       threshold = eval(sys.argv[5])
       increment = eval(sys.argv[6])
       print "filename: "+str(filename)
    else:
        print "Correct usage: python simulate_engtput.py trace_file card_type tx/rx pred(True/False) threshold chan_increment"
        sys.exit(1) 

    nrx=3
    # Create a tx
    ntx=3
    ta = None
    transmitter = Transmitter(ntx,ta)
    # Create a channel
    
    chan = TraceChan(filename, increment)
    length = chan.create_chan(transmitter.Ntx,nrx)
 
    extname=filename.split('/')[-1].split('.')[0]+"_"+card_type+"_"+energy_constraint+"_pred"+str(chan_pred)+"th"+str(threshold)+"_inc"+str(increment)
    receiver = Receiver(EngTputRA(card_type,energy_constraint,chan_pred,threshold),nrx,extname)

    if length > 10000: length = 10000

    for num in range(0,length):
        pkt = transmitter.transmit_pkt()
        chan.apply_channel(pkt)
        #print chan.curr_chan
        #print pkt
        
        # Create receiver
        receiver.receive_pkt(pkt)
        ack_pkt = receiver.get_feedback_pkt()
        
        transmitter.process_ack(ack_pkt)
def main():
 
    hwpred = HoltsWinter()
    chan = TraceChan()
    chan_len = chan.create_chan(3,3)

    chan.get_next_channel()
    Hint = chan.curr_chan
    hwpred.setup_a(Hint)
    hwpred.setup_b(Hint)

    Hpred = Hint
    Hprev = Hint
    for c in range(0,100):
        H = chan.curr_chan
        print "pred:"+str(sum(sum(sum(abs(Hpred - H)))))
        print "diff:"+str(sum(sum(sum(abs(Hprev - H)))))
        Hpred = hwpred.get_next_pred(H)
        Hprev = H
        chan.get_next_channel()
Ejemplo n.º 6
0
def main():

    #####
    ## constant
    PREDICTOR_DEBUG = 0


    #####
    ## variabes
    # filename = "/v/filer4b/v27q002/ut-wireless/yichao/csi_measurement/task01_parse_data/OUTPUT/face.speed3.data.mat"
    # filename = "/v/filer4b/v27q002/ut-wireless/yichao/csi_measurement/task01_parse_data/OUTPUT/card2.6m.data.mat"
    filename = "/v/filer4b/v27q002/ut-wireless/yichao/csi_measurement/task01_parse_data/OUTPUT/l1.dat.mat"
    
    num_sc = 30
    ntx = 3
    nrx = 3
    increment = 1


    #####
    ## initialization
    ## each subcarrier of each steam has one predictor
    hw_preds = []
    # for x in range(1, ntx * nrx * num_sc):
    #     hw_preds.append(HoltsWinter())
    for tx_i in range(0, ntx):
        txp = []
        for rx_i in range(0, nrx):
            rxp = []
            for sc_i in range(0, num_sc): 
                rxp.append(HoltsWinter())
            txp.append(rxp)
        hw_preds.append(txp)
    print "here " + str(len(hw_preds[1][1]))


    #####
    ## holt-winters debug
    if PREDICTOR_DEBUG == 1:
        hw_pred = HoltsWinter()
        for x in xrange(1, 10):
            new_measurement = x * 2 + 1 * 1j
            print "measurement=" + str(new_measurement) + ", pred=" + str(hw_pred.pred) + ", diff=" + str(abs(new_measurement - hw_pred.pred))
            hw_pred.update(new_measurement)


    #####
    ## main start here

    ## read CSI file
    chan = TraceChan(filename, increment)
    num_measurements = chan.create_chan(ntx, nrx)

    for m_i in range(0, num_measurements):
        ## format: [tx, rx, subcarrier]
        chan.get_next_channel()
        Hint = chan.curr_chan
        # print "size=" + str(Hint.shape)

        # for tx_i in range(0, ntx):
        for tx_i in range(0, 1):
            # for rx_i in range(0, nrx):
            for rx_i in range(0, 1):
                # for sc_i in range(0, num_sc):
                for sc_i in range(0, 1):
                    new_measurement = Hint[tx_i, rx_i, sc_i]
                    # print Hint[tx_i, rx_i, sc_i]

                    hw_pred = hw_preds[tx_i][rx_i][sc_i]

                    print "measurement=" + str(new_measurement) + ", pred=" + str(hw_pred.pred) + ", diff=" + str(abs(new_measurement - hw_pred.pred))
                    hw_pred.update(new_measurement)