BER vs SNR
repetitions_for_ebn0(ebn0)
Define o número de repetições em função do \(Eb/N0\), usando interpolação linear entre pontos de referência, dada pela expressão abaixo.
Onde
- \(r\): Número de repetições.
- \(EBN0\): Relação \(Eb/N_0\) em decibéis.
- \(r_i\) e \(r_{i+1}\): Número de repetições nos pontos de referência próximos.
- \(EBN0_i\) e \(EBN0_{i+1}\): Relações \(Eb/N_0\) nos pontos de referência próximos.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ebn0
|
float
|
Relação \(Eb/N_0\) em decibéis. |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
Número de repetições, arredondado para o valor inteiro mais próximo. |
simulate_argos(ebn0_db, numblocks=8, fs=128000, Rb=400)
Simula a transmissão e recepção de um datagrama ARGOS-3, para um dado \(Eb/N0\), retornando a taxa de erro de bit (BER) simulada.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ebn0_db
|
float
|
Relação \(Eb/N0\) em decibéis. |
required |
numblocks
|
int
|
Número de blocos a serem transmitidos. |
8
|
fs
|
int
|
Frequência de amostragem. |
128000
|
Rb
|
int
|
Taxa de bits. |
400
|
Returns:
Name | Type | Description |
---|---|---|
ber |
float
|
A taxa de erro de bit (BER) simulada. |
simulate_qpsk(ebn0_db, num_bits=1000, bits_por_simbolo=2, rng=None)
Simula a transmissão e recepção QPSK em canal AWGN para um dado \(Eb/N0\), retornando a taxa de erro de bit (\(BER\)) simulada.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ebn0_db
|
float
|
Relação \(Eb/N0\) em dB. |
required |
num_bits
|
int
|
Número de bits simulados. |
1000
|
bits_por_simbolo
|
int
|
Número de bits por símbolo \(k\), (\(QPSK = 2\)). |
2
|
rng
|
(Generator, opcional)
|
gerador de números aleatórios. |
None
|
Returns:
Name | Type | Description |
---|---|---|
ber |
float
|
BER simulada. |
run(EbN0_values=np.arange(0, 12, 0.5), num_workers=28)
Executa a simulação completa de \(BER\) vs \(Eb/N0\) para as funções de simulação implementadas.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
EbN0_values
|
ndarray
|
Valores de \(Eb/N0\) a serem simulados. |
arange(0, 12, 0.5)
|
num_workers
|
int
|
Número de processos para execução paralela. |
28
|
Returns:
Name | Type | Description |
---|---|---|
results |
ndarray
|
Array de [Eb/N0, BER_ARGOS_médio, BER_QPSK_médio]. |
Exemplos
- Argos e QPSK: