Skip to content

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.

\[ r = r_{i} + \frac{(EBN0 - EBN0_{i})}{(EBN0_{i+1} - EBN0_{i})} \cdot (r_{i+1} - r_{i}) \]
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: pageplot