数字频带传输——多进制数字调制及MATLAB仿真

news2025/7/9 8:38:24

文章目录

  • 前言
  • 一、MASK(一维信号)
    • 1、MASK 简介
    • 2、MASK 矢量表示
  • 二、MPSK(二维信号)
    • 1、MPSK 简介
    • 2、MPSK 矢量表示
  • 三、MQAM(二维信号)
    • 1、MQAM 简介
    • 2、MQAM 信号的矢量表示
  • 四、正交 MFSK(M维信号)
    • 1、正交 MFSK 简介
    • 2、M 进制正交信号的矢量表示
  • 五、MATLAB 仿真
    • 1、MATLAB 源码
    • 2、仿真及结果


前言

数字频带信号通常也称为数字调制信号,其信号频谱通常是带通型的,适合于在带通型信道中传输。数字调制是将基带数字信号变换成适合带通型信道传输的一种信号处理方式,正如模拟通信中的一样,可以通过对基带信号的频谱搬移来适应信道特性,也到同样的目的可以采用频率调制、相位调制的方式来达到同样的目的。

本文将主要通过 Matlab 来学习多进制的调制解调方式,包括 QPSK、OQPSK,并分析和仿真这些调制系统在 AWGN 信道下的性能。


一、MASK(一维信号)

1、MASK 简介

MASK 信号将 M 进制数字符号一一映射为 M 个幅度值不同的波形,可以写成如下形式:
s m ( t ) = A m g ( t ) c o s 2 π f c t ( m = 1 , 2 , . . . , M , 0 ≤ t ≤ T s ) s_m(t)=A_mg(t)cos2\pi f_ct \hspace{0.5cm} (m=1,2,...,M,0\le t\le T_s) sm(t)=Amg(t)cos2πfct(m=1,2,...,M,0tTs)
这里 { A m , 1 ≤ m ≤ M A_m,1\le m\le M Am,1mM} 与M进制符号一一对应,一般 M = 2 k M=2^k M=2k,且 A m = ( 2 m − 1 − M ) d A_m=(2m-1-M)d Am=(2m1M)d m = 1 , 2 , . . . , M m=1,2,...,M m=1,2,...,M g ( t ) g(t) g(t) 是基带成形信号。

2、MASK 矢量表示

s m ( t ) = s m f ( t ) s_m(t)=s_mf(t) sm(t)=smf(t)
其中, f ( t ) = 2 ε g g ( t ) c o s 2 π f c t f(t)=\sqrt{\frac{2}{\varepsilon_g}}g(t)cos2\pi f_ct f(t)=εg2 g(t)cos2πfct,( ∫ − ∞ ∞ f 2 ( t ) d t = 1 \int_{-\infty}^{\infty}f^2(t)dt=1 f2(t)dt=1), s m = A m ε g / 2 s_m=A_m \sqrt{\varepsilon_g/2} sm=Amεg/2 ( m = 1 , 2 , . . . M ) (m=1,2,...M) (m=1,2,...M),这里 ε g = ∫ − ∞ ∞ g 2 ( t ) d t \varepsilon_g=\int_{-\infty}^{\infty}g^2(t)dt εg=g2(t)dt

因此,MASK信号可以用一维信号空间中的点(星座)表示,如下图示意了 8ASK 的星座图。
在这里插入图片描述

PAM 信号星座

二、MPSK(二维信号)

1、MPSK 简介

MPSK 信号将 M进制符号与 M 个载波相位一一对应,可以写成如下形式:
s m ( t ) = g ( t ) c o s 2 π M ( m − 1 2 ) c o s 2 π f c t − g ( t ) s i n 2 π M ( m − 1 2 ) s i n 2 π f c t s_m(t)=g(t)cos\frac{2\pi}{M}(m-\frac{1}{2})cos2\pi f_ct-g(t)sin\frac{2\pi}{M}(m-\frac{1}{2})sin2\pi f_ct sm(t)=g(t)cosM2π(m21)cos2πfctg(t)sinM2π(m21)sin2πfct

2、MPSK 矢量表示

s m ( t ) = s m 1 f 1 ( t ) + s m 2 f 2 ( t ) s_m(t)=s_{m1}f_1(t)+s_{m2}f_2(t) sm(t)=sm1f1(t)+sm2f2(t)
其中:
f 1 ( t ) = 2 ε g g ( t ) c o s 2 π f c t f_1(t)=\sqrt{\frac{2}{\varepsilon_g}}g(t)cos2\pi f_ct f1(t)=εg2 g(t)cos2πfct f 2 ( t ) = − 2 ε g g ( t ) s i n 2 π f c t f_2(t)=-\sqrt{\frac{2}{\varepsilon_g}}g(t)sin2\pi f_ct f2(t)=εg2 g(t)sin2πfct ∫ − ∞ ∞ f 1 ( t ) f 2 ( t ) d t = 0 \int_{-\infty}^{\infty}f_1(t)f_2(t)dt=0 f1(t)f2(t)dt=0

s m 1 = ε g 2 c o s 2 π M ( m − 1 2 ) s_{m1}=\sqrt{\frac{\varepsilon_g}{2}}cos\frac{2\pi}{M}(m-\frac{1}{2}) sm1=2εg cosM2π(m21) s m 2 = ε g 2 s i n 2 π M ( m − 1 2 ) s_{m2}=\sqrt{\frac{\varepsilon_g}{2}}sin\frac{2\pi}{M}(m-\frac{1}{2}) sm2=2εg sinM2π(m21)

s m = [ s m 1 , s m 2 ] s_m=[s_{m1},s_{m2}] sm=[sm1,sm2] m = 1 , 2 , . . . M m=1,2,...M m=1,2,...M E s = ε g / 2 E_s=\varepsilon_g/2 Es=εg/2

因此,MPSK 可以用二维空间中的星座点表示,下图示意了 QPSK 调制的星座图
在这里插入图片描述

QPSK 信号星座(M=4)

三、MQAM(二维信号)

1、MQAM 简介

用载波的不同幅度、相位对应 M 进制符号,则可以得到 QAM (正交幅度调制)信号,可以写成:
s m ( t ) = A c g ( t ) c o s 2 π f c t − A s g ( t ) s i n 2 π f c t , 0 ≤ t ≤ T s s_m(t)=A_cg(t)cos2\pi f_ct-A_sg(t)sin2\pi f_ct,0\le t \le T_s sm(t)=Acg(t)cos2πfctAsg(t)sin2πfct0tTs
其等效基带信号为 [ A c + j A s ] g ( t ) [A_c+jA_s]g(t) [Ac+jAs]g(t)

2、MQAM 信号的矢量表示

取正交函数:
f 1 ( t ) = 2 ε g g ( t ) c o s ω c t f_1(t)=\sqrt{\frac{2}{\varepsilon_g}}g(t)cos\omega_ct f1(t)=εg2 g(t)cosωct f 2 ( t ) = 2 ε g g ( t ) s i n ω c t f_2(t)=\sqrt{\frac{2}{\varepsilon_g}}g(t)sin\omega_ct f2(t)=εg2 g(t)sinωct

则:
s m ( t ) = A c ε g 2 f 1 ( t ) + A s ε g 2 f 2 ( t ) s_m(t)=A_c\sqrt{\frac{\varepsilon_g}{2}}f_1(t)+A_s\sqrt{\frac{\varepsilon_g}{2}}f_2(t) sm(t)=Ac2εg f1(t)+As2εg f2(t)
因此, s m ( t ) s_m(t) sm(t) 可以用二维空间中的星座点 ( A c ε g 2 , A s ε g 2 ) (A_c\sqrt{\frac{\varepsilon_g}{2}},A_s\sqrt{\frac{\varepsilon_g}{2}}) (Ac2εg ,As2εg ) 表示,若 A c = ( 2 n − 1 − M ) d , A s = ( 2 k − 1 − M ) d A_c=(2n-1-\sqrt{M})d,A_s=(2k-1-\sqrt{M})d Ac=(2n1M )dAs=(2k1M )d k , n = 1 , 2 , . . . M k,n=1,2,...\sqrt{M} k,n=1,2,...M

当 M=16, A c = ± d , ± 3 d , A s = ± d , ± 3 d A_c=\pm d,\pm 3d,A_s=\pm d,\pm 3d Ac=±d,±3dAs=±d,±3d,得到典型的 16QAM 星座图如下图所示:
在这里插入图片描述

16QAM 信号星座

四、正交 MFSK(M维信号)

1、正交 MFSK 简介

用不同频率的余弦载波波形一一对应 M 进制符号,则得到 MFSK 信号,其信号可写成:
s m ( t ) = A c o s ( 2 π f c t + 2 π m Δ f t ) , m = 1 , 2 , . . . , M s_m(t)=Acos(2\pi f_ct+2\pi m\Delta ft),m=1,2,...,M sm(t)=Acos(2πfct+2πmΔft)m=1,2,...,M
其等效基带信号为 s m ( t ) ~ = A e j 2 π m Δ f t \tilde{s_m(t)}=Ae^{j2\pi m\Delta ft} sm(t)~=Aej2πmΔft,为了保证这 M 个信号互相正交,要求最小的 Δ f = 1 2 T s \Delta f=\frac{1}{2T_s} Δf=2Ts1

2、M 进制正交信号的矢量表示

M 进制正交信号可以表示为:
s m ( t ) = E s f m ( t ) s_m(t)=\sqrt{E_s}f_m(t) sm(t)=Es fm(t)
这里, f m ( t ) = 2 T s c o s ( 2 π f c t + π m t T s ) f_m(t)=\sqrt{\frac{2}{T_s}}cos(2\pi f_ct+\frac{\pi mt}{T_s}) fm(t)=Ts2 cos(2πfct+Tsπmt) E s = 1 2 A 2 T s E_s=\frac{1}{2}A^2T_s Es=21A2Ts,所以, s m ( t ) s_m(t) sm(t) 可以用点( E s , 0 , 0 , . . . , 0 \sqrt{E_s},0,0,...,0 Es ,0,0,...,0)、( 0 , E s , 0 , . . . , 0 0,\sqrt{E_s},0,...,0 0,Es ,0,...,0)、( 0 , 0 , E s , . . . , 0 0,0,\sqrt{E_s},...,0 0,0,Es ,...,0)…( 0 , 0 , 0 , . . . , E s 0,0,0,...,\sqrt{E_s} 0,0,0,...,Es

表示,两点之间的最小距离 d m i n = 2 E s d_{min}=\sqrt{2E_s} dmin=2Es

五、MATLAB 仿真

场景:设信道加性高斯白噪声的双边功率谱密度为 N 0 / 2 N_0/2 N0/2,发送信号平均每符号能量 E s E_s Es,利用 MATLAB ,通过仿真的方法仿真 QPSK 系统在 AWGN 信道下的性能

思路:利用 MATLAB ,可以通过蒙特卡罗仿真的方式得到 MPSK 系统的误码率,如下图所示
在这里插入图片描述

MPSK 等效基带系统在无码间干扰 AWGN 信道下性能仿真框图

1、MATLAB 源码

%MPSK系统系统的仿真
clear all;
close all;

M=4;     %QPSK

EsN0dB = 3:0.5:10;
EsN0 = 10.^( EsN0dB/10 );
Es = 1;
N0 = 10.^( -EsN0dB/10 );
sigma = sqrt(N0/2);

error = zeros(1,length(EsN0dB));
s_data = zeros(1,length(EsN0dB));

for k=1:length(EsN0dB)
    error(k)=0;
    s_data(k) = 0;
    while error(k)<1000
        %产生信源 1,2,3,4均匀分布
        d = ceil( rand(1,10000)*M );
        %调制成QPSK信号(复基带形式)
        s = sqrt(Es)*exp(j*2*pi/M*(d-1));
        %加入信道噪声(复噪声)
        r = s + sigma(k)*( randn(1,length(d)) + j*randn(1,length(d)) );
        %判决
        for m=1:M    %计算距离
            rd(m,:) = abs( r - sqrt(Es)*exp(j*2*pi/M*(m-1)) );
        end
        for m=1:length(s)   %判决距离最近的点
            dd(m) = find( rd(:,m) == min(rd(:,m)) );
            if dd(m)~=d(m)
                error(k) = error(k)+1;
            end
        end
        s_data(k) = s_data(k)+10000;
    end
%    drawnow
%    semilogy(EsN0dB, error./(s_data+eps)); hold on;
end

Pe = error./s_data;
%理论计算的误码率结果
Ps = erfc( sqrt(EsN0)*sin(pi/M) );
semilogy(EsN0dB,Pe,'b*-'); hold on;
semilogy(EsN0dB,Ps,'rd-');
xlabel('Es/N0(dB)'); ylabel('误码率');
legend('仿真结果','理论计算结果');

2、仿真及结果

请添加图片描述
从上图可以看到,仿真结果与理论计算结果的误码率曲线基本重合。


我的qq:2442391036,欢迎交流!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YB2503HV 100V 3A SOP8内置MOS 高效率降压IC(昱灿)

YB2503HV 100V 3A SOP8内置MOS 高效率降压IC 描述&#xff1a; YB2503HV是单片集成可设定输出电流的开关型降压恒压驱动器&#xff0c;可工作在宽输入电压范围具有优良的负载和线性调整度。安全保护机制包括每周期的峰值限流、软启动、过压保护和温度保护。YB2503HV需要非常少…

5W2H分析法:全面思考和解决问题的实用工具

5W2H分析法又叫七问分析法&#xff0c;创于二战中美国陆军兵器修理部。发明者用五个以W开头的英语单词和两个以H开头的英语单词进行设问&#xff0c;发现解决问题的线索&#xff0c;寻找发明思路&#xff0c;进行设计构思&#xff0c;从而搞出新的发明项目。5W2H简单、方便&…

速拿offer,超全自动化测试面试题+答案汇总,背完还怕拿不到offer?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、你会封装自动化…

手机上有哪些支持设置农历日期提醒的工具

很多人的生日都是按照农历日期来安排的&#xff0c;而农历日期和公历日期相错的日子很多&#xff0c;在手机上如果想要记录农历生日提醒&#xff0c;需要借助一些支持设定农历日期的工具来实现。 手机上有哪些支持设置农历日期提醒的工具呢&#xff1f;敬业签是一款可以在手机…

高斯过程回归 | 高斯过程回归(Gaussian Process Regression)

高斯过程回归(Gaussian Process Regression)是一种非参数的回归方法,它基于高斯过程模型来建模数据的分布情况。在高斯过程回归中,假设数据点之间的关系服从多元高斯分布。 具体来说,考虑有一组输入变量X和对应的输出变量Y,我们希望通过这些已知数据点来建立一个模型,进…

K8S知识点(一)

&#xff08;1&#xff09;应用部署方式转变 &#xff08;2&#xff09;K8S介绍 容器部署容易出现编排问题&#xff0c;为了解决就出现了大量的编排软件&#xff0c;这里将的是K8S编排问题的解决佼佼者 弹性伸缩&#xff1a;当流量从1000变为1200可以&#xff0c;自动开启一个…

关于编程语言,开发者眼中的争论与共识

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 联合制作 / RTE开发者社区 xxx 是最好的编程语言&#xff01;此话一出&#xff0c;必能掀起一场技术圈儿…

python图像处理 ——图像锐化

python图像处理 ——图像锐化 前言一、原理二、 空间域锐化滤波1.拉普拉斯算子&#xff08;Laplacian&#xff09;2.罗伯茨算子&#xff08;Roberts&#xff09;3.Sobel算子4.Prewitt算子5.Scharr算子 三、实验对比 前言 由于收集图像数据的器件或传输图像的通道存在一些质量缺…

pip install -r requirements.txt

挂了梯子报错 不挂梯子gg下

橙河网络:坏人是怎么形成的?

小A是一个非常热心的人&#xff0c;给谁帮忙&#xff0c;都免费。 大家都说&#xff0c;小 A&#xff0c;实在人呀&#xff0c;哈哈。 小B搬来了&#xff0c;他活多&#xff0c;弄不过来&#xff0c;常找小 A 来帮忙。 小A 每次来帮忙&#xff0c;小B 都给小A一张大团结(100…

SpringBoot集成Swagger接口文档/测试

文章目录 Swagger 介绍Swagger 使用常用注解 Swagger 介绍 使用 Swagger 你只需要按照它的规范去定义接口及接口相关的信息&#xff0c;就可以做到生成接口文档&#xff0c;以及在线接口调试页面。官网&#xff1a;https://swagger.io/ Knife4j 是为 Java MVC 框架集成 Swagg…

【Python】列表、集合、字典基础知识

列表 列表中元素的类型可以不同&#xff0c;列表内部存储方式是元素值存储在不连续的空间&#xff0c;但是把他们的指针存在一块连续的空间 列表的创建 1.list1[] 创建一个空列表 2.用list函数 3.split函数截取 列表的更新 1.通过索引[]改变 2.切片修改 3.列表方法更新 列表…

SLAM从入门到精通(参数标定)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 标定是slam开发过程中很重要的一个环节。这部分内容涉及到很多方面&#xff0c;比如说传感器、比如说算法、比如说机械&#xff0c;总之好的标定不…

C3P0、DBCP、Druid 三种数据库连接池的使用

文章目录 数据库连接池1 C3P0 数据库连接池2 DBCP 数据库连接池3 Druid 数据库连接池 数据库连接池 JDBC 的数据库连接池使用 javax.sql.DataSource 来表示&#xff0c;DataSource 只是一个接口&#xff0c;该接口通常由服务器(Weblogic, WebSphere, Tomcat)提供实现&#xff…

SpringCloudTencent(上)

SpringCloudTencent 1.PolarisMesh介绍2.北极星具备的功能3.北极星包含的组件4.功能特性1.服务管理1.服务注册2.服务发现3.健康检查 2.配置管理 5.代码实战1.环境准备2.服务注册与发现3.远程调用 1.PolarisMesh介绍 1.北极星是腾讯开源的服务治理平台&#xff0c;致力于解决分…

Dev-C调试的基本方法2-1

在Dev-C中调试程序&#xff0c;首先需要在程序中设置断点&#xff0c;之后以调试的方式运行程序。 1 设置断点 当以调试的方式运行程序时&#xff0c;程序会在断点处停下来。点击要设置断点代码行号左侧部分&#xff0c;此时会有如图1所示的红点和绿色对勾&#xff0c;表示断…

Mybatis与Mybatis-Plus(注解与Xml)(单表与多表)

准备工作 这里我们准备了两个与数据库表对应的实体类&#xff0c;stu为学生表&#xff0c;cls为班级表 类属性上的注解如 TableId等 为Mybatis-Plus的注解&#xff0c;使用mybatis会无视掉这些注解 在Stu 类的最后一个属性我们定义了Cls实体类的对象&#xff0c;对于单表查询&…

使用php打印时间精确到毫秒及毫秒转成11位时间戳

在PHP中&#xff0c;可以使用microtime函数来获取当前时间&#xff0c;包括毫秒。以下是示例代码&#xff1a; // 获取当前时间戳&#xff08;秒&#xff09; $time microtime(true); // 将当前时间戳转换为毫秒 $milliseconds round($time * 1000); // 输出当前时间&#…

【C语法学习】12 - scanf()函数

文章目录 0 前言1 函数原型2 参数2.1 格式字符串2.1.1 转换说明 2.2 参数列表 3 返回值4 读取机制4.1 基本概念4.2 转换说明4.3 读取过程4.4 读取示例4.5 多参数 6 示例6.1 示例16.2 示例26.3 示例36.4 示例4 0 前言 scanf()函数虽然使用起来较为灵活&#xff0c;但是其读取机…

SpringBoot集成JPA实现分页和CRUD

SpringBoot集成JPA实现分页和CRUD 文章目录 SpringBoot集成JPA实现分页和CRUDpom.xmlapplication.propertiesaddCategory.jspeditCategory.jsphello.jsplistCategory.jspCategoryCategoryDAOCategoryServiceCategoryServiceImplPage4NavigatorRedisConfigCategoryControllerHel…