Python 绘制误码率对比折线图,纵坐标是10次幂,即求对数

简介: 本文介绍了如何在Python中绘制误码率(BER)的对比折线图,特别指出纵坐标使用10次幂即对数形式来表示误码率,横坐标为信噪比(SNR),并提供了相应的绘图函数和使用示例。

在通信中,需要对比解调的精度,纵坐标是误码率,且单位是10次幂,即对数显示,横坐标是信噪比,可视化程序如下

import numpy as np
import matplotlib.pyplot as plt

def draw_ber_line_graph(ber_list,labels,img_name):
    """
    Draws a line graph of the bit error rate (BER) of three different signals
    over a range of signal-to-noise ratios (SNRs).

    Parameters:
    -----------
    ber_list : list
       多个误码率列表
    labels : list
        每个误码率列表的名称
    img_name : str
        保存图片的名字
    """
    # Define the SNR range
    snr_range = np.arange(0, 16)
    # Convert the BER lists to arrays
    i = 0 
    fig, ax = plt.subplots(figsize=(10,8))
    for ber in ber_list:
        ber1 = np.array(ber)
        # Convert the y-coordinate to the power of 10
#         ber1 = np.power(10, ber1)
        # Create a new figure and axis object
        # Plot the BER lines
        ax.semilogy(snr_range, ber1, label=labels[i])
        i+=1
    # Add axis labels and title
    plt.yscale('log')
    ax.set_xlabel('Signal-to-Noise Ratio (SNR)')
    ax.set_ylabel('Bit Error Rate (BER)')
    ax.set_title('Bit Error Rate vs. SNR')

    # Add a legend
    ax.legend()
    plt.savefig(f'img/{img_name}.png',dpi=300)
    # Show the plot
    plt.show()

使用例子

y_b = [0.4620078125, 0.45069531249999994, 0.44449218749999997, 0.43511718749999995, 0.42079687499999996, 0.4118515625, 0.39975000000000005, 0.380375, 0.37340625000000005, 0.346515625, 0.32675, 0.306390625, 0.29049218750000005, 0.27310156249999995, 0.24654687500000005, 0.2442578125]
y_q = [0.41825, 0.4183203125, 0.4169609375, 0.409890625, 0.4111484375, 0.4026953125, 0.39884375, 0.3885234375, 0.379859375, 0.375390625, 0.3566328125, 0.35109375, 0.3372109375, 0.326421875, 0.3127578125, 0.293078125]
y_m = [0.4510234375, 0.4441875, 0.4348125, 0.4265, 0.4188671875, 0.4009609375, 0.387875, 0.3673125, 0.3562265625, 0.3438046875, 0.3255703125, 0.3008046875, 0.28525, 0.27609375, 0.2476796875, 0.23315625]

draw_ber_line_graph([y_b,y_q,y_m],['BPSK','QPSK','16QAM'],'不同的调制方式')

在这里插入图片描述

目录
相关文章
|
5月前
|
数据可视化 数据挖掘 数据处理
python 盒装图纵坐标单位
【4月更文挑战第1天】
|
5月前
|
Python
折线图(python
折线图(python
42 1
|
5月前
|
Python
python用鼠标获取图像任一点的坐标和像素值
python用鼠标获取图像任一点的坐标和像素值
|
2月前
|
Python
Python计算误码率,输入是0-1比特流矩阵和小数矩阵
本文提供了一个Python函数calculate_ber,用于计算两个NumPy矩阵表示的二进制信号和接收信号之间的误码率(BER),其中包括信号与接收信号的比较、误差计数以及BER的计算过程,并给出了具体的使用示例。
46 2
|
7天前
|
JSON 数据可视化 数据处理
Python数据可视化-折线图可视化
Python数据可视化-折线图可视化
|
2月前
|
索引 Python
Python基于Excel多列长度不定的数据怎么绘制折线图?
本文档详述了如何运用Python从CSV格式的Excel文件中读取特定范围的数据,并基于这些数据绘制多条折线图。文件的第一列代表循环增长的时间序列,后续各列包含不同属性的数据。通过指定起始与结束行数,可选取一个完整的时间循环周期内的数据进行绘图。每列数据以不同颜色和线型表示,并且图片长度会根据时间序列的长度动态调整,确保图表清晰易读。最终生成的图表将保存至指定文件夹。
|
3月前
|
Web App开发 机器学习/深度学习 数据可视化
Python检测坐标
【7月更文挑战第5天】本文介绍如何结合Selenium(自动化测试工具)和BeautifulSoup(HTML解析库)来确定网页文本的屏幕坐标。首先,安装`selenium`和`beautifulsoup4`,并配置浏览器驱动(如ChromeDriver)。通过Selenium打开网页,BeautifulSoup解析HTML,然后使用XPath找到特定文本元素。利用Selenium获取元素的位置和大小信息,打印坐标。示例代码展示了如何处理多处相同文本并保存坐标到文件
29 0
|
4月前
|
Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-2
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
4月前
|
数据可视化 开发者 Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-1
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
4月前
|
SQL 数据可视化 算法
【python可视化】折线图精粹:重点突出的艺术与技巧
【python可视化】折线图精粹:重点突出的艺术与技巧
下一篇
无影云桌面