当前位置: 首页 > article >正文

(73)脉冲幅度调制PAM调制解调通信系统的MATLAB仿真

文章目录

  • 前言
  • 一、PAM调制的基本原理
  • 二、PAM调制的步骤
  • 三、PAM调制示例
  • 四、PAM调制的应用
  • 五、MATLAB仿真
    • 1. 仿真代码
    • 2. 仿真结果
  • 总结


前言

PAM(Pulse Amplitude Modulation,脉冲振幅调制)是一种模拟信号到数字信号的转换方式,它通过改变脉冲的振幅来表示信息。在PAM调制中,信息位(bit)被转换成一个具有特定振幅的脉冲。本文首先对PAM进行介绍,然后给出一个PAM调制解调通信系统的MATLAB仿真。最后给出了仿真结果。


一、PAM调制的基本原理

1. 调制过程:在PAM调制中,每一个数据符号被转换成一个脉冲,这些脉冲的幅度不同,以表示不同的数据值。

2. 信号表示:假设有M个不同的幅度水平,那么每个脉冲可以表示log2M比特的数据。

3. 信号形式:调制信号可以表示为

在这里插入图片描述

其中, an是第n个符号的幅度, g(t)是脉冲形状, Ts是符号周期。

二、PAM调制的步骤

1. 采样:首先,模拟信号在时间上被离散化,即通过采样过程将其转换成一系列离散的样本。

2. 量化:然后,每个样本的振幅被量化到有限数量的离散水平上。

3. 编码:最后,量化后的样本被编码成一系列脉冲,每个脉冲的振幅与量化水平相对应。

三、PAM调制示例

假设我们有一个二进制信号,我们使用4-PAM进行调制:
• 二进制信号:11 01 10 00
• PAM电平级别:-3, -1, 1, 3(分别对应二进制的00, 01, 10, 11)

调制过程如下:

1. 将二进制信号转换为相应的PAM电平级别
o 11 -> 3
o 01 -> -1
o 10 -> 1
o 00 -> -3

2. 生成PAM信号
o 第一个脉冲的振幅为3
o 第二个脉冲的振幅为-1
o 第三个脉冲的振幅为1
o 第四个脉冲的振幅为-3

这样,我们得到了一个PAM信号,它的脉冲振幅代表原始的二进制信息。

四、PAM调制的应用

PAM调制广泛应用于数字通信系统中,特别是在以下几个方面:
• 数字传输:PAM是数字通信系统的基础,如T1线路就是使用PAM来传输数据。
• 无线通信:在无线通信中,PAM可以作为调制技术的一部分,例如在GSM中,PAM用于生成QAM(Quadrature Amplitude Modulation)信号。
• 光纤通信:在光纤通信中,PAM用于将电信号转换为光信号。

PAM调制的关键优点是它简单且易于实现,但它也有局限性,如对噪声和干扰较为敏感,因此在实际应用中需要配合适当的信号处理技术来提高传输的可靠性和效率。

五、MATLAB仿真

1. 仿真代码

% 仿真参数设置
nSym = 1e2;                   % 符号数
MODU_TYPE = 'PAM';            % 调制类型
arrayM = [2,4,8];             % 要仿真的M值数组

for n = 1:length(arrayM)
    % 调制阶数
    M = arrayM(n);
    
    % 生成随机符号
    d = randi([1 M],1,nSym);
    
    % M-PAM基带调制
    [s,ref_Constellation] = mpam_modulator(M,d);

    % 解调
    d_hat = mpam_demodulator(M,s);

    % 画图
    figure();
    subplot(3,2,1)
    plot(d,'linewidth',1)
    grid on;
    title('发射端生成的符号');
    xlabel('n');ylabel('d(n)');
    subplot(3,2,3)
    plot(real(s),'r','linewidth',1)
    grid on;
    title([num2str(M),'-',MODU_TYPE,'调制基带信号']);
    xlabel('n');ylabel('s(n)');
    subplot(3,2,5)
    plot(d_hat,'linewidth',1)
    grid on;
    title('接收端恢复的符号');
    xlabel('n');ylabel('d_hat(n)');
    
    % 画图
    subplot(3,2,[2 4 6])
    % scatterplot(s);
    plot(s,'r*','LineWidth',1.5)
    grid on;
    axis([-M M -M M]);
    axis('square');
    title([num2str(M),'-',MODU_TYPE,'调制基带信号星座图']);
    xlabel('Re\{s(n)\}');ylabel('Im\{s(n)\}');
    figSize = get(0, 'DefaultFigurePaperPositionMode') ;
end

调制函数:

function [s,ref_Constellation] = mpam_modulator(M,d)
    % 【函数功能】
    % 对输入数据符号向量d进行M-PAM调制
    % 【输入参数】
    % M - 调制阶数。例如,M=8表示8-PAM调制
    % d - 输入数据符号向量。取值范围1:M
    % 【返回值】
    % s - 调制符号
    % ref_Constellation - 参考星座
    m = 1:M; 
    Amp = 2*m-1-M;              % 所有可能的双极性幅度电平
    ref_Constellation = complex(Amp);    % 参考星座
    s = complex(ref_Constellation(d));   % M-PAM调制,即把输入多进制符号映射为电平值
end

解调函数:

function [d_hat]= mpam_demodulator(M,r)
    m = 1:M; 
    Amp = 2*m-1-M;              % 所有可能的双极性幅度电平
    ref_Constellation = complex(Amp);    % 参考星座

    x = [real(r); imag(r)]';      % received vec. in cartesian form
    y = [real(ref_Constellation); imag(ref_Constellation)]';                % reference vec. in cartesian form

    X = sum(x.*x,2);
    Y = sum(y.*y,2)';
    distEuclid = X(:,ones(1,length(ref_Constellation))) + ...
                 Y(ones(1,length(r)),:) - 2*x*y';     % Squared Euclidean Dist.
    [~,indices] = min(distEuclid,[],2);               % Find the minimum value along DIM=2
    indices = indices.';
    d_hat = indices;
end

2. 仿真结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结

暂无。




http://www.kler.cn/a/414397.html

相关文章:

  • 封装类与封装函数
  • 环境崩溃后的重新建立
  • Momenta java开发面试题及参考答案
  • 【rustdesk】客户端和服务端的安装和部署(自建服务器,docker,远程控制开源软件rustdesk)
  • DDR3与MIG IP核详解(一)
  • [UUCTF 2022 新生赛]ez_rce
  • 力扣hot100-->前缀和/前缀书/LRU缓存
  • 文本的预处理(pytorch)
  • Ubuntu环境中RocketMQ安装教程
  • ROS VSCode调试方法
  • Linux 命令详解之 tail 命令
  • 【计算机视觉】图像基本操作
  • C++和C中的volatile 关键字
  • Apache Doris 现行版本 Docker-Compose 运行教程
  • 实现uniapp开发安卓应用使用AIDL与原生安卓通信
  • 《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
  • jenkins 2.346.1最后一个支持java8的版本搭建
  • git的简单使用与gdb
  • LVGL加载器,led和列表学习(基于正点原子)
  • Django websocket 进行实时通信(消费者)
  • 第32周:猴痘病识别(Tensorflow实战第四周)
  • GitLab历史演进
  • 组成无重复数字的三位数
  • 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-多语言
  • 第02章 使用VMware部署CENTOS系统
  • SqlServer强制转换函数TRY_CONVERT和TRY_CAST