首页 > 编程知识 正文

基于matlab的通信系统设计,数字通信系统matlab程序仿真

时间:2023-05-03 05:50:04 阅读:59567 作者:4240

目录一、实验项目二、设计思路三、使用的matlab函数声明四、各模块设计(包括代码、流程图) 1、主函数1 )流程图2. matlab代码2、信息1函数1 .流程图2 信息2函数1 .流程图codechange1函数1 .流程图2. matlab代码5、sampling函数1 .流程图2. matlab代码6、re_signal函数1 .流程图

一、实验项目

基带传输系统:尝试传输的0、1位流码型转换基带成形网络(采用余弦滚降或部分响应系统)信道码型逆转换0、1位流。 针对某个码型分析其错误率。 (噪声为加性高斯白噪声)

二、设计思路首先分析数字基带系统的组成。

来源:模拟生成0,1的比特流

码型转换:将源传输的0、1比特流转换为适于信道传输的码型,减少差错率

发送滤波器:压缩输入信号的频带,便于信道上的信号传输

信道:允许基带信号传输的介质可以分为有线信道、无线信道。

接收滤波器:接收信号,并尽可能地去除信道噪声和其它干扰,以均衡信道特性。 使输出的信号有利于采样判定。

采样判定:即使在传输特性不理想的条件下,也在规定的定时判定信号

码型逆变换:反转码型,得到0,1的比特流

因此,matlab中的主函数设计思路如下。

1 .首先,根据所设定的n的值,生成规定长度的0、1的比特流

2、根据设定的代码模式设计代码模式转换函数,通过主函数调用(此处设定AMI代码2 ) ) ) ) ) ) )。

3、向发送滤波器输入信号

4、模拟设置高斯白噪声信号,并将其与发送的信号叠加

5、向接收滤波器输入信号进行滤波

6、采样判断器进行采样判断

7、进行码型逆变换

8、进展域补偿

9、设定图表输出函数,比较各个时期的波形

因此,设计以下子函数:

1、信息1 (n )生成0,1的比特流

2、生成信息2 (n )传输波形

3、codechange (信号,n )进行码型转换

4、过滤器调用fdatool设计的过滤函数进行过滤

5、wgn生成噪声信号

6、sampling(signal,n,n )进行抽样判决

7、re_signal(signal,n )进行码型逆变换

8、绘制并显示draw(n,n,signal0,signal1,…)。

9、SSS (信号,n )用于补偿时域偏移

三、使用的matlab函数声明1、wgn用于产生高斯白噪声

调用格式:

wgn(m,n,power )。

m、n是开始、结束的信号

电源是设定的噪音的数据库

2、过滤

调用格式:

过滤器(num,1,signal ) )。

Num是由FDATOOL生成的滤波器系数

1是分子

Signal是要过滤的函数

3、软驱工具箱

生成正弦曲线滚降滤波器

4、plot函数

为了画画,采用线性坐标

5、axis函数

设定当前坐标区域的范围

6、figure函数

生成新窗口

7、title函数

用于生成图窗口的名称

8、subplot函数

将当前窗口分割为mn的网格,在p指定的位置创建坐标区域。

示例: subplot(2、2、3 ) )。

当前窗口被划分为22网格,并在三个位置创建坐标区域。

四、各模块设计(包括代码、流程图) 1、主函数1 .流程图

2. matlab代码不在此提供,请参考流程图编写

2、信息1函数1 .流程图2. matlab代码function x=信息1 (n ) a=rand(N ) n; x=[]; forI=1:nifa(I )=0.5x )=0; elsex(I )=1; 结束3、信息2函数1 .流程图

2. matlab代码functionx=information2(n,n,signal ) x=[]; forI=1:nifsignal(I )==1 x=[x,Ones(1,n ) ]; else if信号(I )==0 x=[x,Zeros(1,n ) ]; else x=[x,Ones(1,n ).*(-1 ) ]结束结束结束4,编码1函数1 .流程图

2. matla

b代码 function change_signal=codechange1(signal,N)change_signal=[];cout=1;for i=1:N if signal(i)==1 change_signal(i)=cout; cout=-cout; else change_signal(i)=0; endendend 5、sampling函数 1. 流程图

2. matlab代码 function sample_signal=sampling(signal,n,N)sample_signal=[]; %设定空数组用于存放生成的新信码;for i=n/4:n:N*n %设置间隔来取出抽样值; if signal(i)>0.5 %当信号抽样值>0.5,则信号恢复时函数为1; sample_signal=[sample_signal,1]; else if signal(i)<-0.5 %当信号抽样值<-0.5,则信号恢复时函数为-1; sample_signal=[sample_signal,-1]; else %其余恢复为0; sample_signal=[sample_signal,0]; end endendend 6、re_signal函数 1. 流程图

2. matlab代码 function ss=re_siginal(signal,N)ss=[];for i=1:N if signal(i)==1 ss(i)=1; else if signal(i)==-1 ss(i)=1; else ss(i)=0; end endendend 7、draw函数 1. 流程图

2. matlab代码 function draw(N,n,j,signal1,signal2,filter_signal1,noise,signal3,signal4,signal5,signal8,err)% signal1为生成的比特流% signal2为生成的AMI码% filter_signal1为通过滤波器的信号% noise为噪声信号% signal3为AMI码且经过放大% signal4为加入噪声信号的AMI码% signal5是抽样判决生成的AMI码% signal8是复原的比特流% err误码率figure;subplot(2,1,1);plot(signal1);title('生成的比特流');axis([0,N*n,-0.5,1.5]);subplot(2,1,2);plot(signal8);title('复原的比特流');axis([0,N*n,-0.5,1.5]);figure;subplot(3,1,1);plot(signal3);title('AMI码');axis([0,N*n,-1.5,1.5]); subplot(3,1,2);plot(noise);title('噪声信号');axis([0,N*n,-1.5,1.5]);subplot(3,1,3);plot(signal4);title('加入噪声的信号');axis([0,N*n,-1.5,1.5]);figure;subplot(2,1,1);plot(signal4);title('加入噪声的信号');axis([0,N*n,-1.5,1.5]);subplot(2,1,2);plot(filter_signal1);title('经过滤波器的信号');axis([0,N*n,-1.5,1.5]);figure;subplot(2,1,1);plot(signal2);title('AMI码');axis([0,N,-1.5,1.5]);subplot(2,1,2);plot(signal5);title('抽样判决生成的AMI码');axis([0,N,-1.5,1.5]);figure;plot(err.*100);title('误码率(已换算为百分比)');% axis([0,j,0,0.1]);end 8、sss函数 1. 流程图

2. matlab代码 function xx=sss(signal,N)%补偿滤波器造成的时域偏移xx=[];xx(N)=signal(1);for i=1:N-1 xx(i)=signal(i+1);end 五、仿真及测试效果

本次实验总共实验了30次,其误码率如下:

生成的AMI码和抽样判决生成的AMI码:

加入噪声的信号与滤波后的信号的对比:

生成的AMI码、噪声信号及加入的噪声信号的对比:

生成的比特流和复原的比特流的对比:

六、实验总结及心得体会

本次实验实验还是比较波折的。首先在进行滤波器设计的时候就难住我了,我不知道该如何进行表写。虽然在《通信原理》的P148有进行说明,但我未能成功的实现。之后,我有又在CSDN中进行搜索,找了一些有关滤波器设计的博客进行查看。但对我而言,很多都还是看不懂。最后终于看到可以用matlab自带的fdatool工具箱进行编写,同时该博客还提供了如何生成升余弦滚降滤波器的方法。我就用fdatool进行处理,并导出了.mat文件。另一个难点是我成功的完成了整个系统,我查看生成的比特流和还原的比特流,发现二者很相似。但发现误码率却高达50%—60%,高的离谱。我后面在图窗使用它的数据游标,发现波形整体向后偏移了一位,又将实验频谱向前移动了一位。才成功了,但我查阅了很多资料也没有找到原因。总之,个人还是对本次实验比较满意的,它加深了我对通信中的数字基带通信系统的基本认知,锻炼了我编写matlab代码的能力。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。