# STK中误码率BER的计算
## 一、参数之间的关系
在Link Budget中有三个值是我们经常用到的:
1:误码率BER
2:码元能量 $\frac{E_b}{N_o}$
3:载波噪声密度比(Carrier to Noise Density Ratio):$\frac{C}{N_o}$
实际卫星通信的场景中多用**载波噪声密度比**作为接收机的信噪比,
### 1.1 为什么不用载噪比$C/N$呢?
因为不同的接收机的接收带宽不同,造成了接收到的噪声功率不同。(例如信道为AWGN信道,接收机带宽越宽噪声功率越大)
为了消除不同接收机对于信号指标的影响,我们引入了**载波噪声密度比**:$\frac{C}{N_o}=\frac{C}{N}\frac{1}{B}$,其中B为接收机带宽。
### 1.2 码元能量和**载波噪声密度比**的关系
$\frac{C}{N_o}=\frac{E_b}{N_o}+R_b$
在传输速率一定的情况下,二者的差值为一个常数。
举个例子:$R_b=100Mbps,\\\frac{C}{N_o}=20dB/MHz,\\Bandwith = 5000MHz$
则此时的码元能量 $\frac{E_b}{N_o}=\frac{C}{N_o}-R_b=20-10log_{10}(100)=0dB$。
此时的载噪比$\frac{C}{N}=\frac{C}{N_o}-B(dB)=20-10log_{10}(5000)=-16.989dB$
## 二、BER的计算
上文讲述了三个量之间的关系,下文讲如何根据数字通信中的信噪比,即码元能量来确定误码率的理论上限:
首先要转换码元能量dB为比值关系,假设码元能量为$x$,信噪比比值$r=10 ^ {r / 10}$,
又由查表可知BPSK时的香农极限为
$BER=\frac{1}{2}erfc(\sqrt{r})$
因此带入数值即可。
当调制方式为QPSK时,由于一个码字由两个bit组成,两个bit均正确该码字才正确,因此QPSK情况下:
- 误比特率与BPSK相同
- 误信息率为(1-两个比特均正确的概率):$1-(1-\frac{1}{2}erfc(\sqrt{r}))^2$
## 三、Python实现
```python
import math
BER = 0.5 * math.erfc(np.sqrt(10 ** (SNR / 10))) # 误比特率
QPSK_Symbol_Error_Rate = 1 - (1 - 0.5 * math.erfc(np.sqrt(10 ** (SNR / 10)))) ** 2# QPSK下的误信息率
```