通信原理大作业--基于MATLAB的数字通信系统仿真设计
% 数字通信系统仿真,主要模块:信源、信源编码、信道编码,调制;信道;解调制、信道译码、信源译码、信宿;
% (1)信源:产生一个模拟信号或数字信号 --正弦信号
% (2)信源编码:任何一种压缩编码 --PCM-脉冲编码调制方式
% (3)信道编码:任何一种纠错码(奇偶校验,分组码,等); --线性分组码
% (4)调制: 任何一种调制(2ASK,2PSK,等); --2PSK-二进制相移键控法
% (5)信道:任何一种信道(理想,高斯,等); --高斯白噪声模拟信道噪声
% (6)解调制:解调(4); --相干解调法
% (7)信道译码:译(3); --错码率
% (8)信源译码:译(2)
% (9)信宿:得到一个一个模拟信号或数字信号,即:返原(1)
main-主函数
% (1)信源:产生一个模拟信号或数字信号t=0:2*pi/399:2*pi; %1个周期-400个点x=sin(2*t); %2个周期,一个200点len=length(t); %400
% (2)信源编码:任何一种压缩编码socode=Sourcecode(t,x); %len-400行-8列
% (3)信道编码:任何一种纠错码(奇偶校验,分组码,等); --线性分组码chcode=Channelcode(t,socode); %len-400行-12列 % % (4)-(6)调制与解调
% %2PSK+高斯白噪声模拟信道噪声+相干解调法code=Moanddemodulation1(t,chcode,len); % (7)信道译码:译(3); --错码率 chdecode=Channeldecode(t,code,len);
% (8)信源译码:译(2)desocoding=Sourcedecode(t,chdecode);
1.信源编码-量化编码-z=Sourcecode(t,x)
function z=Sourcecode(t,x) %信源编码%2.量化A=87.6;y=quantificat(x,A);%3.编码z=a_pcm(y);figure(1) subplot(4,1,1);plot(t,x);axis([0 2*pi -1.2 1.2]);xlabel('时间');ylabel('幅度');title('原始信号');subplot(4,1,2);plot(t,y)axis([0 2*pi -1.2 1.2]);xlabel('时间');ylabel('幅度');title('A律量化后的信号');figure(2) subplot(2,1,1);stem(x);xlabel('抽样数');ylabel('幅度');title('抽样信号');subplot(2,1,2);stem(y);xlabel('抽样数');ylabel('幅度');title('量化电平');end
1.1 量化-A率13折线-y=quantificat(x,A)
function y=quantificat(x,A) %量化a=1/A; %0.0114for i=1:length(x)if x(i)>=0if(x(i)<=a)y(i)=(A*x(i))/(1+log(A));elsey(i)=(1+log(A*x(i)))/(1+log(A));endelseif(x(i)>=-a)y(i)=-(A*-x(i))/( 1+log(A));elsey(i)=-(1+log(A*-x(i)))/(1+log(A));endendendend
1.2 编码-4位码字16份-z=a_pcm(y)
function z=a_pcm(y) %编码paragraphcode(y); %极性-段落码pieceofcode(y); %段内码function paragraphcode(y)for i=1:length(y)I=y(i)*2048; %转换为量化单位%>--1,<--0if I>0z(i,1)=1; %极性码-正-1elsez(i,1)=0; %极性码-负-0I=-I;endif I>128z(i,2)=1; if I>512z(i,3)=1; if I>1024z(i,4)=1; elsez(i,4)=0;endelsez(i,3)=0;if I>256z(i,4)=1; elsez(i,4)=0;endendelsez(i,2)=0;if I>32z(i,3)=1; if I>64z(i,4)=1; elsez(i,4)=0;endelsez(i,3)=0;if I>16z(i,4)=1; elsez(i,4)=0;endendendendendfunction pieceofcode(y)for i=1:length(y)I=y(i)*2048; %转换为量化单位if I<0I=-I;endparcode=z(i,2)*4+z(i,3)*2+z(i,4)+1; %段落位置序号stalevel=2^(parcode+2); %该段落起始电平zhishu=parcode-2;if parcode-2<0zhishu=0;enddeta=2^zhishu; %量化间隔if I>stalevel+8*detaz(i,5)=1;if I>stalevel+12*detaz(i,6)=1;if I>stalevel+14*detaz(i,7)=1;if I>stalevel+15*detaz(i,8)=1;elsez(i,8)=0;endelsez(i,7)=0;if I>stalevel+13*detaz(i,8)=1;elsez(i,8)=0;endendelsez(i,6)=0;if I>stalevel+10*detaz(i,7)=1;if I>stalevel+11*detaz(i,8)=1;elsez(i,8)=0;endelsez(i,7)=0;if I>stalevel+9*detaz(i,8)=1;elsez(i,8)=0;endendendelsez(i,5)=0;if I>stalevel+4*detaz(i,6)=1;if I>stalevel+6*detaz(i,7)=1;if I>stalevel+7*detaz(i,8)=1;elsez(i,8)=0;endelsez(i,7)=0;if I>stalevel+5*detaz(i,8)=1;elsez(i,8)=0;endendelsez(i,6)=0;if I>stalevel+2*detaz(i,7)=1;if I>stalevel+3*detaz(i,8)=1;elsez(i,8)=0;endelsez(i,7)=0;if I>stalevel+1*detaz(i,8)=1;elsez(i,8)=0;endendendendendend
end
2.信道编码-线性分组码-chcode=Channelcode(t,socode)
function A=Channelcode(t,x) %信道编码%400-len行-12列A=[];k=8;r=4;n=12; %分组码各部分长度IR=eye(r);IK=eye(k);P=[1 1 1 1 0 0 0 01 0 0 0 1 1 1 00 1 1 0 1 1 0 10 1 0 1 1 0 1 1]; Q=P';H=[P,IR]; %监督矩阵G=[IK ,Q];%生成矩阵for i=1:length(t)A(i,:)=x(i,:)*G; %for j=9:12if mod(A(i,j), 2) == 0A(i,j)=0;elseA(i,j)=1;endendendend
3.调制与解调-2PSK与相干解调法-code=Moanddemodulation1(t,chcode,len)
function z=Moanddemodulation1(t,x,len) %调制与解调%%x--len-400行-12列g=x(:)'; %4800列--按x第一列所有...最后一列所有f=6;cp=[];mod=[];bit=[];%之前一个元素-->400个元素,通过信道后取400个元素中较多的作为解码for n=1:length(g);%调制过程 4800个元素if g(n)==0;cp1=ones(1,len); %400-len列个1bit1=zeros(1,len);else if g(n)==1;cp1=-ones(1,len);%400-len列个-1bit1=ones(1,len);endendc=sin(f*2*t); %400-len个点cp=[cp cp1]; %1920000列 x==0--100个1,x==1---100个-1mod=[mod c]; %1920000列-一个周期sin数值bit=[bit bit1];%1920000列 x==0--100个0,x==1---100个1endpsk=cp.*mod; %1920000列tz=awgn(psk,16);%信号 psk 中加入白噪声,信噪比为16demod=2*mod.*tz;%psk 同步解调%————带通-低通滤波器——%Fp=600;%通带截止频率Fs=1300;%阻带起始频率Rp=3; %通带内波动(dB)即通带内所允许的最大衰减Rs=20;%阻带内最小衰减(dB)Fn=11025;%采样率Ws=Fs/(Fn/2);%阻带起始角频率Wp=Fp/(Fn/2); %通带截止角频率( rad/s)计算归一化角频率[n,wn]=buttord(Wp, Ws,Rp,Rs);%计算阶数和截止频率[b,a]=butter(n,wn);%计算H(z)dmod1=filter(b,a,demod); %一维滤波器 1920000列19200*len%——抽样判决———%for m=1:len*length(g);if dmod1(m)<0;dmod(m)=1;else if dmod1(m)>=0;dmod(m)=0;endendendzer=0;one=0;for i=0:length(g)-1for j=1:lenif dmod(i*len+j)==0zer=zer+1;else if dmod(i*len+j)==1one=one+1;endendendif zer>=onez1(i+1)=0;else if zer<onez1(i+1)=1;endendzer=0;one=0;end%zl--4800列n=1;for j=1:12for i=1:lenz(i,j)=z1(n);n=n+1;endendfigure(3)subplot(2,1,1);plot(psk,'Linewidth',1.5);grid on;title('2PSK调制信号');%标题显示 xlabel('时间/S');ylabel('幅度/V');axis([0 len*length(g) -1.5 1.5]);subplot(2,1,2);plot(tz,'Linewidth',1.5);grid onaxis([0 len*length(g) -2.5 2.5]);title('信号通过高斯白噪声信道后的波形');xlabel('时间/S');ylabel('幅度/V');figure(4)subplot(2,1,1);plot(psk,'Linewidth',1.5);grid on;title('2PSK调制信号(局部)');%标题显示 xlabel('时间/S');ylabel('幅度/V');axis([0 len/1600*length(g) -1.5 1.5]);subplot(2,1,2);plot(tz,'Linewidth',1.5);grid onaxis([0 len/1600*length(g) -1.5 1.5]);title('信号通过高斯白噪声信道后的波形(局部)');xlabel('时间/S');ylabel('幅度/V');figure(5);subplot(2,1,1);plot(demod,'Linewidth',1.5);grid onaxis([0 100*length(g) -3.5 3.5]);title('相乘后信号波形');xlabel('时间/S');ylabel('幅度/V');subplot(2,1,2);plot(dmod1,'Linewidth',1.5);grid onaxis([0 100*length(g) -3.5 3.5]);title('信号通过低通滤波器后的波形');xlabel('时间/S');ylabel('幅度/V');figure(6);subplot(2,1,1);plot(bit,'Linewidth',1.5);grid on;title('二进制输入信号序列');%标题显示xlabel('时间/S');ylabel('幅度/V');axis([0 len*length(g) -0.2 1.2]);subplot(2,1,2);plot(dmod,'Linewidth',1.5);grid onaxis([0 len*length(g) -0.2 1.2]);title('2PSK解调波形');xlabel('时间/S');ylabel('幅度/V');end
4.信道译码-误码率-chdecode=Channeldecode(t,code,len)
function A=Channeldecode(t,x,len) %信道译码error=0;k=8;r=4;n=12; %分组码各部分长度IR=eye(r);IK=eye(k);P=[1 1 1 1 0 0 0 01 0 0 0 1 1 1 00 1 1 0 1 1 0 10 1 0 1 1 0 1 1]; Q=P';H=[P,IR]; %监督矩阵G=[IK ,Q];%生成矩阵for i=1:length(t)A(i,:)=x(i,1:8);bh=H*x(i,:)';for j=1:length(bh)if mod(bh(j),2)==1error=error+1;break;endendenddisp('错误数:')errordisp('误码率')error/len
end
5.信源译码-还原量化-desocoding=Sourcedecode(t,chdecode)
function ending=Sourcedecode(t,x) %信源译码len=length(t);for i=1:lenparcode=x(i,2)*4+x(i,3)*2+x(i,4)+1; %段落位置序号stalevel=2^(parcode+2); %该段落起始电平zhishu=parcode-2;if parcode-2<0zhishu=0;enddeta=2^zhishu; %量化间隔secode=x(i,5)*8+x(i,6)*4+x(i,7)*2+x(i,8); %段内位置序号ID=stalevel+secode*deta+deta/2; %译码电平z(i)=ID/2048; %实际电平if x(i,1)==0z(i)=-z(i);endend%还原量化前电平ending=quanreduction(z);figure(1) subplot(4,1,3);plot(t,z);axis([0 2*pi -1.2 1.2]);xlabel('时间');ylabel('幅度');title('译码电平');subplot(4,1,4);plot(t,ending);axis([0 2*pi -1.2 1.2]);xlabel('时间');ylabel('幅度');title('信源译码');end5.1 还原量化前电平-ending=quanreduction(z)```bash
function x=quanreduction(y) %还原量化前信号A=87.6;a=1/(1+log(A)); %for i=1:length(y)if y(i)>=0if(y(i)<=a)x(i)=y(i)*(1+log(A))/A;elsex(i)=exp(y(i)*(1+log(A))-1)/A;endelseif(y(i)>=-a)x(i)=-(-y(i)*(1+log(A)))/A;elsex(i)=-exp(-y(i)*(1+log(A))-1)/A;endendendend
结果-图例:
![输入与输出结果](https://img-blog.csdnimg.cn/79c6a14b7314486eb3316af68914ea14.png)
![抽样与量化](https://img-blog.csdnimg.cn/d2521a3b88224729937d08b3dc1496b9.png)
![2PSK调制与通过信道后信号](https://img-blog.csdnimg.cn/56088d19cc2b4b01824058c09b26843f.png)
![局部](https://img-blog.csdnimg.cn/2a5b1965116b4a3cbbf4bc6bfbfd6456.png)![相干解调](https://img-blog.csdnimg.cn/289638411cfd41acb03c57cba2854118.png)
![调制与解调输入输出](https://img-blog.csdnimg.cn/35a21e54e1244c59afe2e74ed83da5e5.png)
通信原理大作业--基于MATLAB的数字通信系统仿真设计相关推荐
- 数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码
@数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...
- 用matlab实现女声变男声步骤,数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码...
@数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...
- matlab求解多自由度振动系统,【2017年整理】1-《机械振动基础》大作业,基于matlab的多自由度振动.doc...
[2017年整理]1-<机械振动基础>大作业,基于matlab的多自由度振动 <机械振动基础>大作业 (2016年春季学期) 题目多自由度振动系统的固有频率和固有阵型 姓 名学 ...
- Pluto模拟调制点对点通信(通信原理大作业)
一.实验目的 1. 熟悉并掌握PLUTO SDR主动学习模块的使用: 2. 使用MATLAB平台与PLUTO SDR通信,通过对模拟调制系统中各个调制方式对信号噪声的消除效果来验证其系统的抗噪声性能. ...
- 【通信原理】#19 基于matlab的交织与解交织
5.25 #19 基于matlab的交织与解交织 交织可以解决什么问题? 交织是为了解决突发错误.比如偶尔发生一个bit的错误,那么可以通过诸如汉明码.卷积码等前向纠错编码将这1bit的错误纠正过来. ...
- 西电计算机通信原理,西电通信原理大作业
<西电通信原理大作业>由会员分享,可在线阅读,更多相关<西电通信原理大作业(17页珍藏版)>请在人人文库网上搜索. 1.通信原理大作业2ASK信号传输仿真2ASK信号传输仿真1 ...
- 西北工业大学导航原理大作业
导航原理大作业 1.原子陀螺是一种先进的陀螺仪,目前许多机构在大力研究,请问原子陀螺可分为几种类型.它们的基本原理是什么? 3.一台超高精度惯导(假设陀螺和加计无测量误差.初始对准也无误差),地外天体 ...
- 混频通信的matlab仿真,基于MATLAB的扩频通信系统仿真研究—上海交通大学
基于MATLAB 的扩频通信系统仿真研究 范伟 翟传润 战兴群 (上海交通大学电子信息与电气工程学院,200030,上海) 摘要 本文阐述了扩展频谱通信技术的理论基础和实现方法,利用MATLAB 提供 ...
- 江南大学C语言大作业,TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc...
TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc TCP/IP协议编程大作业 课题名称 基于TCP的网络通信 专 业 计算机科学与技术 班 级 计算机1206 学 号 103041 ...
- 数字图像处理——大作业 基于车道信息的违法车辆车牌识别
数字图像处理--大作业 基于车道信息的违法车辆车牌识别 一.车牌识别研究现状与分析 二.车牌识别算法原理 2.1 车牌定位 2.1.1 基于RGB阈值的车牌区域初定位 2.1.2 基于数学形态学的车牌 ...
最新文章
- 怎么才能优雅地向导师表达「这周科研没什么进展」?
- [delphi]参数带有默认值的函数
- 挑战《IT我最大》 Windows 7由你秀 活动的丑恶行径
- 利用组策略防止计算机访问共享资源
- CentOS下首次使用as86汇编器
- 谁能提供修改生产订单的Bapi?
- MatConvnet工具箱文档翻译理解(3)
- 双系统隐藏d盘linux,如何实现双系统的相互隐藏
- 在数据库系统中遇见存储技术飞跃会怎样?
- 使用ftp命令之后,如何退出
- java数据类型单位_java的数据类型
- 如何判断NSMutableDictionary是否有某个key
- 完全免费!6个不可错过的图片、视频等资源网站分享,个个都是精品!
- Datalogic DS2100
- matlab2016安装报错(附资源)
- postman后端返回的数据显示中文乱码解决
- Android 推送消息开放接口 OpenPush
- python中去除全角空格
- 数字化开采|AIRIOT智慧矿山自动化生产解决方案
- 再读c++primer plus 003
热门文章
- 软件企业CMMI认证需要什么条件?
- 华南农业大学计算机科学与技术专业,华南农业大学住宿
- 西岛住宿软件测试,三亚西岛怎么玩,吃住玩全攻略带走
- 《研磨设计模式》builder生成器模式(golang)
- 我的世界手游java版的光影_我的世界光影整合包1.7.2
- linux 使用ACR122U-A9设备读写M1卡
- Win10点击声音图标打不开音量调节的解决方法
- 磁力云播Android代码,磁力云播
- 线性不可分的线性支持向量机的原始问题(凸二次规划)详细求解
- 学生宿舍管理项目开发计划书_学生宿舍管理系统项目-计划书.doc