예제 #1
0
def proposal(params: dict, sigma, h_si, h_s, receive_antenna_count) -> NNModel:
    system_model = SystemModel(params['n'], sigma, params['gamma'],
                               params['phi'], params['PA_IBO_dB'],
                               params['PA_rho'], params['LNA_IBO_dB'],
                               params['LNA_rho'], h_si, h_s,
                               params['h_si_len'], params['h_s_len'],
                               receive_antenna_count, params['TX_IQI'],
                               params['PA'], params['LNA'], params['RX_IQI'])

    # NNを生成
    nn_model = NNModel(params['nHidden'], params['optimizer'],
                       params['learningRate'], params['h_si_len'],
                       params['h_s_len'], receive_antenna_count,
                       params['momentum'])

    nn_model.learn(system_model, params['trainingRatio'], params['nEpochs'],
                   params['batchSize'], params['h_si_len'], params['h_s_len'],
                   receive_antenna_count, params['delay'],
                   params['standardization'])

    return nn_model
        logging.info('random channel')
        logging.info('h_si:{0.real}+{0.imag}i'.format(h_si))
        logging.info('h_s:{0.real}+{0.imag}i'.format(h_s))

        for IBO_index, IBO_dB in enumerate(params['IBO_dB']):
            for index, sigma in enumerate(sigmas):
                logging.info("IBO_dB_index:" + str(IBO_index))
                logging.info("SNR_AVERAGE_index:" + str(snr_index))
                logging.info("sigma_index:" + str(index))
                logging.info("time: %d[sec]" % int(time.time() - start))
                system_model = SystemModel(
                    params['n'],
                    sigma,
                    params['gamma'],
                    params['phi'],
                    IBO_dB,
                    params['rho'],
                    IBO_dB,
                    params['rho'],
                    h_si,
                    h_s,
                )

                demodulate = m.demodulate_qpsk(system_model.y.squeeze())

                error = np.sum(system_model.d_s != demodulate)

                errors[IBO_index][index][snr_index] = error

    logging.info("learn_end_time: %d[sec]" % int(time.time() - start))
    # 結果をdumpしておく
    result = Result(params, errors, losss, val_losss)
예제 #3
0
        h_si = m.channel()
        h_s = m.channel()
        logging.info('random channel')
        logging.info('h_si:{0.real}+{0.imag}i'.format(h_si))
        logging.info('h_s:{0.real}+{0.imag}i'.format(h_s))

        for index, sigma in enumerate(sigmas):
            logging.info("SNR_AVERAGE_index:" + str(snr_index))
            logging.info("sigma_index:" + str(index))
            logging.info("time: %d[sec]" % int(time.time() - start))
            system_model = SystemModel(
                params['n'],
                sigma,
                params['gamma'],
                params['phi'],
                params['PA_IBO_dB'],
                params['PA_rho'],
                params['LNA_IBO_dB'],
                params['LNA_rho'],
                h_si,
                h_s,
            )

            # NNを生成
            model = NNModel(params['nHidden'])
            model.learn(system_model, params['trainingRatio'], params['nEpochs'], params['batchSize'])

            errors[index][snr_index] = model.error
            losss[index][snr_index][:] = model.history.history['loss']
            val_losss[index][snr_index][:] = model.history.history['val_loss']

    logging.info("learn_end_time: %d[sec]" % int(time.time() - start))
        'nEpochs': 20,
        'learningRate': 0.004,
        'trainingRatio': 0.8,  # 全体のデータ数に対するトレーニングデータの割合
        'batchSize': 32,
    }

    h_si = m.channel()
    h_s = m.channel()

    system_model = SystemModel(
        params['n'],
        0,
        params['gamma'],
        params['phi'],
        params['PA_IBO_dB'],
        params['PA_rho'],
        params['LNA_IBO_dB'],
        params['LNA_rho'],
        h_si,
        h_s,
        params['h_si_len'],
        params['h_s_len'],
    )

    model = NNModel(
        params['nHidden'],
        params['learningRate'],
        params['h_si_len'],
        params['h_s_len'],
    )
    model.learn(
        system_model,
예제 #5
0
        'phi': 3.0,
        'PA_IBO_dB': 1000,
        'PA_rho': 1000,
        'LNA_IBO_dB': 7,
        'LNA_rho': 2,
        'h_si_len': 1,
        'h_s_len': 1,
        "receive_antenna": 1
    }

    h_si = m.channel(1, params['h_si_len'])
    h_s = m.channel(1, params['h_s_len'])

    system_model = SystemModel(params['n'], 0, params['gamma'], params['phi'],
                               params['PA_IBO_dB'], params['PA_rho'],
                               params['LNA_IBO_dB'], params['LNA_rho'], h_si,
                               h_s, params['h_si_len'], params['h_s_len'],
                               params['receive_antenna'], True, False, False,
                               False)

    d = m.compensate_iqi(system_model.x_iq, params['gamma'], params['phi'])

    plt.figure()
    plt.scatter(system_model.x.real,
                system_model.x.imag,
                color="red",
                label="x")
    plt.scatter(system_model.x_iq.real,
                system_model.x_iq.imag,
                color="blue",
                label="x_iq")
    plt.scatter(d.real, d.imag, color="green", label="x_compensate_iq")
예제 #6
0
            h_si.append(m.channel(1, params['h_si_len']))
            h_s.append(m.channel(1, params['h_s_len']))

        for IBO_index, IBO_dB in enumerate(params['IBO_dB']):
            for sigma_index, sigma in enumerate(sigmas):
                logging.info("IBO_dB_index:" + str(IBO_index))
                logging.info("SNR_AVERAGE_index:" + str(trials_index))
                logging.info("sigma_index:" + str(sigma_index))
                system_model = SystemModel(
                    params['n'],
                    sigma,
                    params['gamma'],
                    params['phi'],
                    IBO_dB,
                    params['rho'],
                    params['LNA_IBO_dB'],
                    params['LNA_rho'],
                    h_si,
                    h_s,
                    params['h_si_len'],
                    params['h_s_len'],
                    params['receive_antenna'],
                )

                # NNを生成
                nn_model = NNModel(
                    params['nHidden'],
                    params['optimizer'],
                    params['learningRate'],
                    params['h_si_len'],
                    params['h_s_len'],