(1)产生信源符号序列:生成40000bit的二进制符号序列,采样率为100kHz,信息速率4Kbps (2)串并转换、星座映射:把(1)的比特序列,转换为16进制符号,并按16QAM调制映射为星座(注意:先表示为10进制数,再利用qammod做星座映射),得到复基带符号。画出发送端的星座图,注意,用scatterplot函数绘制星座图。 (3)脉冲成形:平方根升余弦脉冲成形,滚降系数为0.5; 绘制脉冲成形滤波器的传输函数,标出其带宽。对(2)产生的复基带符号上采样,过脉冲成形滤波器得到复基带信号。绘制复基带信号的功率谱,标出带宽,对比基带信号带宽和符号速率。 (4)上变频:做正交调制,载波为10KHz(即,将(3)的基带信号调制到10KHz载波上)。

时间: 2024-04-28 07:25:15 浏览: 10
好的,让我来回答你的问题。 首先,根据你的要求,我可以为你生成一个40000bit的二进制符号序列,采样率为100kHz,信息速率为4Kbps。 代码如下: ```python import numpy as np # 生成二进制符号序列 bit_seq = np.random.randint(2, size=40000) # 按4Kbps采样率进行采样 sample_rate = 100000 symbol_rate = 4000 num_samples_per_symbol = int(sample_rate / symbol_rate) sampled_seq = np.repeat(bit_seq, num_samples_per_symbol) print("生成的二进制符号序列为:", bit_seq) ``` 接下来,我们将二进制符号序列转换为16进制符号,并进行16QAM调制映射,得到复基带符号,并画出发送端的星座图。 代码如下: ```python import matplotlib.pyplot as plt import scipy.signal as signal # 把二进制符号序列转换为16进制符号 hex_seq = np.zeros((int(len(bit_seq) / 4),), dtype=np.int32) for i in range(len(hex_seq)): hex_seq[i] = bit_seq[i*4]*8 + bit_seq[i*4+1]*4 + bit_seq[i*4+2]*2 + bit_seq[i*4+3] # 利用qammod函数进行星座映射 qam_order = 16 constellation = signal.qammod(hex_seq, qam_order) # 绘制星座图 plt.figure() plt.scatter(constellation.real, constellation.imag) plt.xlabel('Real') plt.ylabel('Imag') plt.title('发送端星座图') plt.show() ``` 接下来,我们需要进行脉冲成形,使用平方根升余弦脉冲成形,滚降系数为0.5,并绘制脉冲成形滤波器的传输函数,标出其带宽。然后对复基带符号进行上采样,过脉冲成形滤波器得到复基带信号,并绘制复基带信号的功率谱,标出带宽,对比基带信号带宽和符号速率。 代码如下: ```python # 平方根升余弦脉冲成形 alpha = 0.5 num_taps = 101 baudrate = symbol_rate beta = alpha taps = signal.firrcos(num_taps, baudrate, beta, sample_rate, window='sqrt') # 绘制脉冲成形滤波器的传输函数 w, h = signal.freqz(taps) plt.figure() plt.plot(w / np.pi * sample_rate / 2, abs(h)) plt.xlabel('频率(Hz)') plt.ylabel('幅度') plt.title('脉冲成形滤波器传输函数') plt.show() # 对复基带符号进行上采样 upsampled_constellation = np.zeros((len(constellation)*num_samples_per_symbol,), dtype=complex) upsampled_constellation[::num_samples_per_symbol] = constellation # 过脉冲成形滤波器 tx_signal = signal.lfilter(taps, 1, upsampled_constellation) # 绘制复基带信号的功率谱 frequencies, psd = signal.periodogram(tx_signal, sample_rate) plt.figure() plt.plot(frequencies, 10*np.log10(psd)) plt.xlabel('频率(Hz)') plt.ylabel('功率谱密度(dB/Hz)') plt.title('复基带信号功率谱密度') plt.show() # 计算复基带信号带宽和符号速率 _, _, _, _, bandwidth = signal.istft(taps, fs=sample_rate) print("复基带信号带宽为:{:.2f}kHz".format(bandwidth/1000)) print("符号速率为:{}Kbps".format(symbol_rate/1000)) ``` 最后,我们需要对复基带信号进行正交调制,并将其上变频到10kHz载波上。 代码如下: ```python # 正交调制 t = np.arange(len(tx_signal)) / sample_rate i_signal = np.real(tx_signal * np.exp(1j * 2*np.pi*symbol_rate*t)) q_signal = np.imag(tx_signal * np.exp(1j * 2*np.pi*symbol_rate*t)) # 上变频到10kHz载波上 carrier_freq = 10000 tx_signal = i_signal * np.cos(2*np.pi*carrier_freq*t) - q_signal * np.sin(2*np.pi*carrier_freq*t) ``` 这就是我对你提出的问题的回答。希望能对你有所帮助。

相关推荐

最新推荐

recommend-type

英语信源熵实验(代码).docx

基于C语言的程序设计,从网上收集的英文文献,每篇文献超过一万个字符,统计这篇文献的熵,再根据熵值生成新的序列。
recommend-type

六首页数字藏品NFT交易网React NextJS网站模板 六首页数字藏品nft交易网反应NextJS网站模板

六首页数字藏品NFT交易网React NextJS网站模板 六首页数字藏品nft交易网反应NextJS网站模板
recommend-type

wireshark安装教程入门

wireshark安装教程入门
recommend-type

基于C++负数据库的隐私保护在线医疗诊断系统

【作品名称】:基于C++负数据库的隐私保护在线医疗诊断系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于负数据库的隐私保护在线医疗诊断系统 NDBMedicalSystem 客户端及服务器端 本项目是在保护用户隐私的前提下,完成了对新冠肺炎、乳腺癌、眼疾等多种疾病的智能诊断。
recommend-type

基本的嵌入式操作系统给

任务管理
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。