(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. 仿真结果


总结

暂无。



相关推荐
kissgoodbye201221 小时前
信号处理文献阅读总结:型号识别
信号处理
Evand J2 天前
【MATLAB例程12】永磁同步电机基于增广无迹卡尔曼滤波的未知负载转矩在线观测
开发语言·matlab
分享资料3 天前
MATLAB 中分号 (;)的作用
matlab
Evand J3 天前
【PMSM例程11】永磁同步电机(PMSM)基于UKF的转速与转子位置估计。附下载链接
算法·matlab·卡尔曼滤波·永磁同步电机·ukf·pmsm·位置估计
严肃小白兔4 天前
优秀 MATLAB 作者、书籍推荐:国外经典教材与技术资源整理
matlab
熊猫_豆豆5 天前
buck-boost电路MATLAB仿真
matlab·电路·电力电子技术
逆向编程6 天前
MATLAB高级数据结构:cell、struct与table深度应用
开发语言·数据结构·matlab
星夜离尘566 天前
MATLAB 刚体坐标变换:点、方向和逆变换为什么不能混用
matlab
Evand J7 天前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
机器学习之心7 天前
基于贝叶斯物理信息神经网络的矿产预测与不确定性量化,MATLAB代码及复现报告
人工智能·神经网络·matlab·贝叶斯物理信息神经网络