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


总结

暂无。



相关推荐
IT猿手5 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
【建模先锋】6 小时前
创新首发!基于注意力机制优化的高创新故障诊断模型
深度学习·信号处理·故障诊断·特征融合·轴承故障诊断·fft变换·vmd分解
Evand J10 小时前
【MATLAB复现RRT(快速随机树)算法】用于二维平面上的无人车路径规划与避障,含性能分析与可视化
算法·matlab·平面·无人车·rrt·避障
s090713610 小时前
【声纳成像】基于滑动子孔径与加权拼接的条带式多子阵SAS连续成像(MATLAB仿真)
开发语言·算法·matlab·合成孔径声呐·后向投影算法·条带拼接
IT猿手12 小时前
基于 ZOH 离散化与增量 PID 的四旋翼无人机轨迹跟踪控制研究,MATLAB代码
开发语言·算法·matlab·无人机·动态路径规划·openclaw
IT猿手12 小时前
基于控制障碍函数(Control Barrier Function, CBF)的无人机编队三维动态避障路径规划,MATLAB代码
开发语言·matlab·无人机·动态路径规划·无人机编队
SugarFreeOixi13 小时前
MATLAB绘图风格记录NP类型
python·matlab·numpy
IT猿手13 小时前
基于 CBF 的多无人机编队动态避障路径规划研究,无人机及障碍物数量可以自定义修改,MATLAB代码
开发语言·matlab·无人机·动态路径规划
IT猿手15 小时前
基于强化学习Q-learning算法的无人机三维路径规划算法原理与实现,MATLAB代码
算法·matlab·无人机·路径规划·动态路径规划
ghie909017 小时前
拉普拉斯金字塔图像融合MATLAB仿真程序
人工智能·计算机视觉·matlab