matlab仿真 数字基带传输(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真   刘学勇编著第六章内容,有兴趣的读者请阅读原书)

clear all
nsamp=10;%每个脉冲信号的抽样点数
s0=ones(1,nsamp);%基带脉冲信号,其中s0的信号为1,1,1,1,1,1,1,1,1,1
s1=[1 1 1 1 1 -1 -1 -1 -1 -1];%s1的信号为1,1,1,1,1,-1,-1,-1,-1,-1
nsymbol=100000;%每种信噪比下的发送符号数EbN0=0:12;%信噪比
msg=randi([0,1],1,nsymbol);%消息比特
s00=zeros(nsymbol,1);
s11=zeros(nsymbol,1);
indx=find(msg==0);%比特0在发送消息中的位置s00(indx)=1;%将含有信号0的位置设置为标志1
s00=s00*s0;%比特0影射为发送波形s0
indx1=find(msg==1);%比特1在发送消息中的位置
s11(indx1)=1;%将含有信号1的位置设置为标志1
s11=s11*s1;%比特1映射为发送波形s1(1)
s=s00+s11;%总的发送波形
s=s.';%数据转置,方便接收端处理for indx=1:length(EbN0)decmsg=zeros(1,nsymbol);r=awgn(s,EbN0(indx)-7);%发送信号通过AWGN信道(2)r00=s0*r;%对s0进行互相关处理r11=s1*r;%与s1进行互相关处理indx1=find(r11>=r00);%当r11>r00时,证明判决结果是s1,当r11<r00时,证明判决结果是s0decmsg(indx1)=1;%判决(3)[err,ber(indx)]=biterr(msg,decmsg);%得到误比特率
end
semilogy(EbN0,ber,'-ko',EbN0,qfunc(sqrt(10.^(EbN0/10))));%(4)
title('二进制正交信号误比特率性能')
xlabel('EbN0');ylabel('误比特率Pe')
legend('仿真结果','理论结果')

 (1):映射规则如下:

(2)发射信号通过AWGN

(3)互相关处理

由图6-2,可知,得到信号r(t)后让r(t)对s0和s1做互相关,若一个位置s0的互相关结果比s1的互相关结果大,那么这个位置可以被判决为s0,反之可以判决为s1。

(4)这里计算差错概率时,我们已知的是信噪比是dB形式,而在计算时需要转化成倍数形式

公式为:    倍数=根号下(10^(分贝/10));(见公式6-11)

 

clear all
nsamp=10;
s0=ones(1,nsamp);
s1=-s0;%双极性信号,s1=-s0nsymbol=100000;
EbN0=0:10;
msg=randi([0,1],1,nsymbol);%消息比特
s00=zeros(nsymbol,1);
s11=zeros(nsymbol,1);
indx=find(msg==0);
s00(indx)=1;
s00=s00*s0;
indx1=find(msg==1);
s11(indx1)=1;
s11=s11*s1;
s=s00+s11;
s=s';
for indx=1:length(EbN0)decmsg=zeros(1,nsymbol);r=awgn(s,EbN0(indx)-7);r00=s0*r;%只需要和s0进行相关indx1=find(r00<0);decmsg(indx1)=1;[err,ber(indx)]=biterr(msg,decmsg);
end
semilogy(EbN0,ber,'-ko',EbN0,qfunc(sqrt(10.^(EbN0/10))),'-k*',EbN0,qfunc(sqrt(2*10.^(EbN0/10))));
title('双极性信号误比特率性能')
xlabel('EbN0');ylabel('误比特率Pe')
legend('仿真结果','正交信号误理论误比特率','双极性信号误理论误比特率')

例6.4和6.1的区别是,因为s0和s1是双极性信号,所以判决时只需要求一个互相关的情况,然后与0比较即可得出结果。

clear all
nsamp=10;
s1=ones(1,nsamp);
s0=zeros(1,nsamp);nsymbol=100000;
EbN0=0:10;
msg=randi([0,1],1,nsymbol);%消息比特
s00=zeros(nsymbol,1);
s11=zeros(nsymbol,1);
indx=find(msg==0);
s00(indx)=1;
s00=s00*s0;
indx1=find(msg==1);
s11(indx1)=1;
s11=s11*s1;
s=s00+s11;
s=s';
for indx=1:length(EbN0)decmsg=zeros(1,nsymbol);r=awgn(s,EbN0(indx)-7);r00=s1*r;%只需要和s0进行相关indx1=find(r00>5);decmsg(indx1)=1;[err,ber(indx)]=biterr(msg,decmsg);
end
semilogy(EbN0,ber,'-ko',EbN0,qfunc(sqrt(10.^(EbN0/10)/2)),EbN0,qfunc(sqrt(10.^(EbN0/10))),'-k*',EbN0,qfunc(sqrt(2*10.^(EbN0/10))));
title('单极性信号在AWGN信道下的误比特率性能')
xlabel('Eb/N0');ylabel('误比特率Pe')
legend('单极性信号仿真结果','单极性信号信号误理论误比特率','正交信号误理论误比特率','双极性信号误理论误比特率')

这里的s0设置成了0 0 0 0 0 0 0 0 0 0(即只有n(t))

s1为1 1 1 1 1 1 1 1 1 1(s(t)和n(t))

因为阈值是信号能量Eb/2,所以s(t)的能量=10*1的平方=10;10/2=5,所以阈值为5

clear all
nsymbol=100000;
nsamp=10;M=4;
graycode=[0 1 3 2];
EsN0=0:15;
msg=randi([0,3],1,nsymbol);
msg1=graycode(msg+1);%格雷码映射
msg2=pammod(msg1,M);%4-PAM调制
s=rectpulse(msg2,nsamp);%矩形脉冲成形
for indx=1:length(EsN0)decmsg=zeros(1,nsymbol);r=awgn(real(s),EsN0(indx)-7,'measured');%(1)r1=intdump(r,nsamp);%相关器输出%y=intdump(x,nsamp)对信号x进行一个符号周期的积分,然后将平均值输出到y中。nsamp是每个符号的采样数。msg_demod=pamdemod(r1,M);%判决decmsg=graycode(msg_demod+1);%格雷码逆映射[err,ber(indx)]=biterr(msg,decmsg,log2(M));%求误比特率[err,ser(indx)]=symerr(msg,decmsg);
end
semilogy(EsN0,ber,'-ko',EsN0,ser,'-k*',EsN0,1.5*qfunc(sqrt(0.4*10.^(EsN0/10))));
title('4-PAM信号在AWGN信道下的性能')
xlabel('Es/N0');ylabel('误比特率和误符号率')
legend('误比特率','误符号率','理论误符号率')

 

 (1):

awgn函数默认对PAM信号添加的是复数噪声,因此,使用real函数说明添加的是实数噪声。

之前在信道仿真那篇文章中提到了QPSK信号的传输

再加上上题可以得到PSK类型信号的调制解调方法(文章链接见下)

http://t.csdnimg.cn/yzh6r

产生发送符号->格雷编码映射->使用pskmod函数进行调制->使用rectpulse进行矩形脉冲成形->加上干扰/噪声(传输过程)->采用intdump函数进行矩形脉冲成形的逆过程(相关器输出)->格雷码逆映射->恢复原信号

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

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

相关文章

【笔记】缺少DLL文件 Cannot import dll:C\Users\xxx\...\madd.dll

报错 原因 杀毒软件拦截了程序解决&#xff1a;关闭该软件 &#xff08;1&#xff09;电脑右下角&#xff08;↑&#xff09;&#xff0c;找到杀毒软件&#xff08;我电脑是 联想杀毒Plus&#xff09; &#xff08;2&#xff09;找到 “更改设置” - 选择 “实时扫描” &#…

vue3 使用Mock

官网: http://mockjs.com/ 安装 npm install mockjs -Dsteps1: main.js 文件引入 import /api/mock.jssteps2: src/api/mock.js import Mock from mockjs import homeApi from ./mockData/home /*** 1.拦截的路径:mock拦截了正常NetWork/网络请求,数据正常响应* 2.方法* …

【计算机网络】DHCP实验

一&#xff1a;实验目的 1&#xff1a;深入理解DHCP&#xff08;动态主机配置协议&#xff09;的工作原理和数据包交换过程。 2&#xff1a;掌握如何通过命令行释放和重新获取IP地址&#xff0c;并通过抓包软件分析DHCP消息的具体内容。 二&#xff1a;实验仪器设备及软件 硬…

猫头虎 分享已解决Error || pip install 出现 error: subprocess-exited-with-error 错误的解决办法

&#x1f42f; 猫头虎 分享已解决Error || pip install 出现 error: subprocess-exited-with-error 错误的解决办法 &#x1f680; 摘要 &#x1f31f; 在人工智能领域开发中&#xff0c;我们常常需要使用不同的包管理工具来管理我们的开发环境。作为技术博主猫头虎&#xff…

C++——QT:保姆级教程,从下载到安装到用QT写出第一个程序

登录官网&#xff0c;在官网选择合适的qt版本进行下载 这里选择5.12.9版本 点击exe文件下载&#xff0c;因为服务器在国外&#xff0c;国内不支持&#xff0c;所以可以从我的网盘下载 链接: https://pan.baidu.com/s/1XMILFS1uHTenH3mH_VlPLw 提取码: 1567 --来自百度网盘超级…

【Node.js入门精要】从零开始的开发之旅

说明文档&#xff1a;Node.js 教程_w3cschool 概念 Node.js 是一个开源、跨平台的 JavaScript 运行时环境&#xff0c;基于 Chrome 的 V8 引擎构建&#xff0c;专为构建高性能和可扩展的网络应用程序而设计的服务端语言。它采用事件驱动、非阻塞 I/O 模型&#xff0c;能够处理大…

气膜拳击馆:未来拳击场馆的最佳选择—轻空间

在现代城市化进程中&#xff0c;体育场馆的建设越来越受到关注。传统建筑成本高、施工周期长&#xff0c;并且在环境控制和节能环保方面存在诸多限制。而气膜建筑作为一种新型建筑形式&#xff0c;以其独特的优势和高性价比&#xff0c;逐渐成为各类体育场馆建设的最佳选择。今…

1. 设计原则 C++

1. 设计原则 C++ 1.1 依赖倒置原则(DIP) 高层模块(稳定)不应该依赖于低层模块(变化),两者都应该依赖于抽象(稳定)。如果一个稳定的依赖于一个会变化的(不稳定的),可想而知,也会变得不稳定。 这种就是违背 DIP 。好的设计应该下面这样。 抽象(稳定)不应该依赖…

AI跟踪报道第49期-新加坡内哥谈技术-本周AI新闻: 开源AI王者归来的一周

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

《程序猿入职必会(6) · 返回结果统一封装》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

unity2D游戏开发08脚本化对象

创建Scriptable Object 在scripts文件夹下创建一个名为Sriptable Objects的文件夹,然后在文件夹里面创建一个名为Item的脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;//[CreateAssetMenu] 是一个属性(Attribute),用于告诉Unity编…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 7月27日,星期六

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年7月27日 星期六 农历六月廿二 1、 国资委&#xff1a;未来五年中央企业预计安排大规模设备更新改造总投资超3万亿。 2、 我国“巴丹吉林沙漠—沙山湖泊群”“中国黄&#xff08;渤&#xff09;海候鸟栖息地&#xff08;第…

【算法】单向环形链表解决Josephu(约瑟夫)问题

应用场景 n 个小孩标号&#xff0c;逆时针站一圈。从 k 号开始&#xff0c;每一次从当前的小孩逆时针数 m 个&#xff0c;然后让最后这个小孩出列。不断循环上述过程&#xff0c;直到所有小孩出列&#xff0c;由此产生出一个队列编号。 提示 用一个不带头节点的循环链表来处…

电脑为什么会出现“找不到msvcr120.dll无法执行代码”?如何解决msvcr120.dll丢失错误

在使用电脑的过程中不知带大家有没有遇到过“找不到msvcr120.dll无法执行代码”的错误提示的情况&#xff0c;出现这样的情况大家都有什么解决办法可以解决&#xff1f;有什么办法能够帮助大家修复丢失的msvcr120.dll文件。接下来这篇文章就将教大家修复“找不到msvcr120.dll无…

2. SDK分析

1. 概述 恒玄bes2700 sdk属于恒玄面向耳机市场的sdk&#xff0c;主要参考《BES_TWS_Software_Development_User_Manual_v1.2.pdf》 SDK由恒玄提供&#xff0c;版本《best1603_ibrt_anc_20240124_207ba3fb90.tar》 2. 文件树结构 - “apps” mainly stores upper-layer applicat…

NRK2202语音识别芯片在车载分氛围灯的应用方案

一、开发背景 随着汽车从单纯的交通工具向智能化、个性化生活空间的转变&#xff0c;车内环境营造成为了提升驾乘体验的关键一环。氛围灯&#xff0c;不仅能够根据驾驶模式、音乐节奏乃至乘客情绪变换色彩与亮度&#xff0c;更承载着营造温馨、浪漫或激情氛围的重任。然而&…

[Windows CMD] 查看网络配置 ipconfig

ipconfig 是一个网络命令工具&#xff0c;用于显示所有适配器&#xff08;网络接口&#xff09;的 IPv4 和 IPv6 配置信息。这个命令在 Windows 操作系统中非常常用&#xff0c;也存在于其他一些基于 IP 的网络系统中&#xff0c;如 macOS 和 Linux&#xff08;在这些系统中通常…

C++ //练习 15.30 编写你自己的Basket类,用它计算上一个练习中交易记录的总价格。

C Primer&#xff08;第5版&#xff09; 练习 15.30 练习 15.30 编写你自己的Basket类&#xff0c;用它计算上一个练习中交易记录的总价格。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块&#xff1a; /********************…

vue3 父组件 props 异步传值,子组件接收不到或接收错误

1. 使用场景 我们在子组件中通常需要调用父组件的数据&#xff0c;此时需要使用 vue3 的 props 进行父子组件通信传值。 2. 问题描述 那么此时问题来了&#xff0c;在使用 props 进行父子组件通信时&#xff0c;因为数据传递是异步的&#xff0c;导致子组件无法成功获取数据…

ueditor跨域问题解决

ueditor解决跨域问题 问题&#xff1a;1.在引用vue-ueditor-wrap后&#xff0c;上传图片和附件出现跨域问题&#xff0c;前端引用了webpack去解决跨域问题&#xff0c;但仍然存在跨域问题&#xff1f; ueditor是百度的富文本&#xff0c;功能较多但资料不够全&#xff0c;因为…