Python计算误码率,输入是0-1比特流矩阵和小数矩阵

简介: 本文提供了一个Python函数calculate_ber,用于计算两个NumPy矩阵表示的二进制信号和接收信号之间的误码率(BER),其中包括信号与接收信号的比较、误差计数以及BER的计算过程,并给出了具体的使用示例。

第二维度输入矩阵,是模型预测出来的概率,是小数值,大于0.5 的判断为1,小于0.5的判断为0.

import numpy as np

def calculate_ber(signal, received):
    """
    Calculates the bit error rate (BER) of two NumPy matrices representing
    a binary signal and the received signal, respectively.

    Parameters:
    -----------
    signal : numpy.ndarray
        A matrix of shape (m, n) representing the binary signal.
    received : numpy.ndarray
        A matrix of shape (m, n) representing the received signal.

    Returns:
    --------
    ber : float
        The bit error rate between the two signals.
    """
    # Ensure the two matrices have the same shape
    assert signal.shape == received.shape, "Error: matrices must have the same shape."

    # Calculate the number of bit errors
    num_errors = np.count_nonzero(signal != (received > 0.5))

    # Calculate the total number of bits
    total_bits = signal.size

    # Calculate the bit error rate (BER)
    ber = num_errors / total_bits

    return ber

例子

import numpy as np

# Define the two matrices
signal = np.array([[0, 1, 1, 0],
                   [1, 0, 1, 1],
                   [0, 1, 0, 0]])

received = np.array([[0.2, 0.8, 0.9, 0.3],
                     [0.7, 0.4, 0.6, 0.8],
                     [0.1, 0.6, 0.4, 0.2]])

# Calculate the BER
ber = calculate_ber(signal, received)

# Print the result
print("Bit error rate:", ber)
目录
相关文章
|
4月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
163 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
7月前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
241 60
|
1月前
|
Python
Python中Cp、Cpk、Pp、Ppk的计算与应用
总的来说,Cp、Cpk、Pp、Ppk是衡量过程能力的重要工具,它们可以帮助我们了解和改进生产过程,提高产品质量。
108 13
|
1月前
|
存储 人工智能 算法
使用Python计算从位置x到y的最少步数
本文通过Python代码结合广度优先搜索(BFS)算法,解决从起点到终点的最少步数问题。以二维网格为例,机器人只能上下左右移动,目标是最短路径。BFS按层遍历,确保首次到达终点即为最短路径。文中提供完整Python实现,包括队列与访问标记数组的使用,并输出示例结果。此外,还探讨了双向BFS、Dijkstra及A*算法等优化方法,帮助读者深入理解最短路径问题及其高效解决方案。
64 0
|
7月前
|
Python
Datetime模块应用:Python计算上周周几对应的日期
Datetime模块应用:Python计算上周周几对应的日期
176 1
|
5月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
116 18
|
5月前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
135 7
|
6月前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
199 3
|
7月前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
120 1
|
7月前
|
机器学习/深度学习 移动开发 Python
【10月更文挑战第11天】「Mac上学Python 22」小学奥数篇8 - 排列组合计算
本篇将通过 Python 和 Cangjie 双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题,并加深对数学知识和编程逻辑的理解。
115 4