数字调制


文章目录

  • 数字调制
  • 前言
    • 幅度键控
    • 相移键控
    • 频移键控
    • 正交幅度调制
    • 参考资料

前言

主要内容来自参考资料[2],在学习记录的同时勘正了书中代码的部分错误。


幅度键控

示例代码:

%% OOK
clear all;close all
t = 0.01:0.01:8;
y = sin(2*pi*t);%载波
z = zeros(1,100);o = ones(1,100);%二进制数
x = [o,z,o,o,z,z,o,z];
ook = x.*y;
plot(t,x,'.',t,ook)
legend('信号序列','幅频键控')

仿真结果图:

相移键控

示例中 M = 8 M=8 M=8,生成常数包络PSK信号波形,将信号幅度归一化为1,取载波频率为 6 / T 6/T 6/T

示例代码:

%% PSK
%生成8PSK信号
clear all;close all;
T = 1;M = 8;
N = 120;delta_T = T/(N-1);
t = 0:delta_T:T;
Es = T/2;%单个符号的能量这么设是为了使调制信号幅度为1
fc = 6/T;
u = zeros(8,length(t));
for i = 1:8u(i,:) = sqrt(2/T*Es)*cos(2*pi*fc*t+(i-1)*2*pi/M);
end
%画图
for i = 1:8subplot(8,1,i)plot(t,u(i,:))
end

仿真结果图:

频移键控

%% FSK
clear all;close all
t = 0.01:0.01:8;
fc0 = 2;
y = sin(2*pi*t);%载波
z = zeros(1,100);o = ones(1,100);%二进制数
x = [o,z,o,o,z,z,o,z];
fc = fc0*(x+1);
fsk = sin(2*pi*fc.*t);%调制信号
plot(t,x,'.',t,fsk)
legend('信号序列','频移键控')

仿真结果图:

正交幅度调制

示例代码:
1.主程序代码

%% 正交幅度调制
% 理论:theory;实际:practice
clear all;close all;
SNR_dB_p = 0:15;%选取部分点进行仿真
SNR_dB_t = 0:15;%选择较多的点进行理论计算
SNR_t = 10.^(SNR_dB_t/10);%dB→线性
M = 16;%16QAM
k = log2(M);%位数?
for i = 1:length(SNR_dB_p)err_p(i) = QAM_16(SNR_dB_p(i));
end
for i = 1:length(SNR_dB_t)x = sqrt(3*k*SNR_t(i)/(M-1));err_t(i) = 4*(1/2)*erfc(x/(sqrt(2)));
end
semilogy(SNR_dB_t,err_t);hold on
semilogy(SNR_dB_p,err_p,'rp');
legend('实际值','理论值')
title('信噪比-误比特率曲线')

所用到的子程序代码
2.子程序一

function err_rate = QAM_16(s_in_dB)
%UNTITLED2 此处显示有关此函数的摘要
%   此处显示详细说明
N = 10000;d = 1;
Eav = 10*d^2;%平均符号能量?
snr = 10^(s_in_dB/10);%线性信噪比
sigma = sqrt(Eav/(8*snr));%方差
M = 16;
for i = 1:N     %N点蒙特卡罗模拟temp = rand;source_d(i) = 1+floor(M*temp);   %数字信号序列,分布在[1,16]内的整数
end
map = [ -3*d  3*d;-d    3*d;d     3*d;3*d   3*d;-3*d    d;-d      d;d       d; 3*d    d; -3*d   -d;-d     -d;d      -d; 3*d   -d; -3*d -3*d;-d   -3*d;d     3*d; 3*d -3*d;];%16QAM星座图
for i = 1:Nsource_map(i,:) = map(source_d(i),:);%生成N个点,随机分布在星座图各点
end
for i = 1:Nn = Gauss(sigma);%输入方差,生成高斯分布的N个点receive(i,:) = source_map(i,:)+n;%叠加噪声
end
err_num = 0;%误比特个数
for i = 1:N     %N轮仿真for j = 1:M %每轮仿真计算M(16)个距离dist(j) =  (receive(i,1)-map(j,1))^2+(receive(i,2)-map(j,2))^2;end[dist_min,index] = min(dist);if(index ~= source_d(i)) %表明噪声太大,将产生误码err_num = err_num+1;end
end
err_rate = err_num/N;%实际误比特率

3.子程序二

function [g1,g2] = Gauss(miu,sgma)
%UNTITLED4 此处显示有关此函数的摘要
%   参数判断
if(nargin == 0)miu = 0;sgma = 1;
elseif nargin == 1sgma = miu;miu = 0;
end
u = rand;%符合均匀分布的随机数
z = sgma*(sqrt(2*log(1/(1-u))));%符合瑞利分布的随机数
u1 = rand;
g1 = miu+z*cos(2*pi*u1);%生成两个统计独立的正态分布的随机数
g2 = miu+z*sin(2*pi*u1);
end

仿真结果图

这里有一定的问题,和参考资料[2]中画的图有很大区别,当信噪比较大时,实际值和理论值不符。可能的原因是,误码率函数仅在一定的区间内适用,因为定义式进行了近似。在信噪比较小时,理论值与实际值吻合程度较好。

子程序中利用均匀分布生成正态分布的随机数原理

可利用CDF求逆法生成符合指定分布的随机数(数学原理见如下链接)https://blog.csdn.net/haolexiao/article/details/60511164

但是对于正态分布则存在一定特殊性,
故可使用子程序中的方法生成正太分布随机数[3]

参考资料

[1] ttps://blog.csdn.net/u014630987/article/details/70156489
[2] 《MATLAB通信系统建模与仿真(第2版)》 邓奋发 编著
[3]https://wenku.baidu.com/view/7ac43010a55177232f60ddccda38376bae1fe039.html

MATLAB通信系统仿真(二)——数字调制相关推荐

  1. 基于matlab的数字调制,基于MATLAB的多功能数字调制系统信号源仿真

    内容简介: 毕业设计 基于MATLAB的多功能数字调制系统信号源仿真,共60页,27225字 摘要 数字通信与模拟通信系统相比有着灵活性.高效性和保密性等突出特点.数字通信系统仿真对于系统分析起着越来 ...

  2. 基于Matlab的通信系统仿真-数字基带传输系统

    目录 一.实验项目 二.设计思路 三.使用的matlab函数声明 四.各模块设计(包含代码.流程图) 1.主函数 1. 流程图 2. matlab代码 2.information1函数 1. 流程图 ...

  3. MATLAB通信系统仿真(三)——扩频通信

    扩频通信系统仿真 文章目录 扩频通信系统仿真 前言 伪随机码 直接序列扩频系统 跳频扩频系统 参考资料 前言 主要内容来自参考资料[2],在学习记录的同时勘正了书中代码的部分错误. 伪随机码 背景知识 ...

  4. matlab通信系统仿真设计课程设计,基于matlab的FM通信系统仿真设计与实现_课程设计报告...

    基于matlab的FM通信系统仿真设计与实现_课程设计报告 第 0 页 共 20 页第 0 页 共 20 第 0 页 共 20 页课程设计报告题 目 : 基于 matlab 的 FM 通信系统仿真设计 ...

  5. 数字图像处理及MATLAB实现实验二——数字图像处理基础

    1.像素的4连通和8连通 bw=[1 0 0 1 0;1 0 1 0 1;0 0 1 0 1;1 0 0 0 1] X8=bwlabel(bw,8) X4=bwlabel(bw,4) 2.对lena图 ...

  6. matlab通信工具comm,matlab-通信工具箱教程.ppt

    6.5.1 带通数字调制/解调 1. 数字带通调制函数dmod( ) 格式:y=dmod(x, Fc, Fd, Fs, method -) 功能:用频率为Fc(Hz)的载波去调制数字信号,然后再输出采 ...

  7. 【毕业设计/Matlab系列】基于PCM编译码和2ASK调制解调的通信系统仿真

    Date:2022.5.22 文章目录 前言 1.算法过程 2.仿真效果图 3.核心matlab代码 前言 在大学毕业设计的时候,课题要求实现<基于PCM编译码和2ASK调制解调的通信系统仿真& ...

  8. ask信号调制matlab,基于Matlab的ASK数字调制系统仿真

    基于Matlab的ASK数字调制系统仿真 摘要: "幅移键控"又称为"振幅键控",记为ASK.也有称为"开关键控"(通断键控)的,所以又记作 ...

  9. MATLAB在通信系统仿真中的注意

    原文链接:(更多文章移步链接) MATLAB在通信系统仿真中的注意 - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/46668425 1.调用函数fourier和i ...

最新文章

  1. 1073 Scientific Notation
  2. linux中top命令详解
  3. spark rdd saveAsTextFile保存为文件
  4. 通信专业学python有用吗-通信人不会这项技能,5G时代很难拿到高薪
  5. 新技术 新体验 - 北京.NET俱乐部Visual Studio2008 MVC 交流会
  6. 直击CVPR2017:商汤科技打造技术盛宴23篇论文刮起中国风 By 机器之心2017年7月25日 10:14 近日,CVPR2017 在夏威夷如火如荼地进行,作为全球计算机视觉顶级会议,CVPR
  7. 放大缩小保证div对齐_GraphPad Prism 绘图教程 | 如何在图表中对齐对象
  8. 漏洞挖掘 符号执行_简述符号执行
  9. 学python用ubuntu还是win10_Windows 10上使用Ubuntu的优点
  10. PHP中error_reporting()用法详解
  11. vim配置python代码提示,VIM配置成Python IDE
  12. ashx 跨域_ASP.NET通用HTTP处理程序(ashx的),支持JSONP
  13. mfc程序转化为qt_小峰的QT学习笔记
  14. 小白都能看懂的缓存入门
  15. eclipse linux c开发环境,Eclipse下搭建C/C++开发环境
  16. SCCM 2012 R2 从入门到精通 Part11 系统推送(2)
  17. 随手小记 才知道[阁楼藏尸|未来闪影]
  18. 小技巧 ----- 关于Java中的System.arraycopy()
  19. Mac和Linux下测试端口是否存活一法[转载]
  20. django关闭debug后,报400错误

热门文章

  1. 量纲对回归结果的影响_应用回归分析-第3章课后习题参考 答案.doc
  2. mysql数据库集群方案
  3. .npy .npz 文件-numpy的文件存储
  4. C#DBHelper_FactoryDB_GetConn
  5. 【JavaScript】事件相关知识详解
  6. 黑马57期视频免费下载
  7. 条码打印软件如何同时调用多个数据库
  8. Facebook Android集成和开发
  9. oracle 大表新增列 慢_Oracle DDL性能改进-大表新增列行为分析
  10. 杨博:医疗大数据服务任重道远