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

文章目录


前言

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. 仿真代码

matlab 复制代码
% 仿真参数设置
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

调制函数:

matlab 复制代码
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

解调函数:

matlab 复制代码
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. 仿真结果


总结

暂无。



相关推荐
山河君14 小时前
webrtc之语音活动上——VAD能量检测原理以及源码详解
算法·音视频·webrtc·信号处理
wheeldown15 小时前
【数学建模】数据预处理入门:从理论到动手操作
python·数学建模·matlab·python3.11
小白的高手之路21 小时前
Matlab中的积分——函数int()和quadl()
matlab
机器学习之心1 天前
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题,Matlab实现
人工智能·神经网络·matlab·物理信息神经网络·二阶常微分方程
WangYan20221 天前
MATLAB 2023a深度学习工具箱全面解析:从CNN、RNN、GAN到YOLO与U-Net,涵盖模型解释、迁移学习、时间序列预测与图像生成的完整实战指南
深度学习·matlab·matlab 2023a
迎风打盹儿1 天前
均匀圆形阵抗干扰MATLAB仿真实录与特点解读
matlab·信号处理·抗干扰·均匀圆阵·波束合成
Ro Jace2 天前
科研笔记:数学建模启发的课题研究方法
数学建模·信号处理
数维学长9862 天前
【全网最全】《2025国赛/高教杯》C题 思路+代码python和matlab+文献 一到四问 退火算法+遗传算法 NIPT的时点选择与胎儿的异常判定
开发语言·算法·matlab
dlraba8022 天前
用遗传算法破解一元函数最大值问题:从原理到 MATLAB 实现
开发语言·matlab
996终结者2 天前
Python数据分析与处理(二):将数据写回.mat文件的不同方法【超详细】
python·matlab·数据分析