通信工程MATLAB上机实验指导书.docx
- 文档编号:11691016
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:17
- 大小:106.76KB
通信工程MATLAB上机实验指导书.docx
《通信工程MATLAB上机实验指导书.docx》由会员分享,可在线阅读,更多相关《通信工程MATLAB上机实验指导书.docx(17页珍藏版)》请在冰豆网上搜索。
通信工程MATLAB上机实验指导书
MATLAB实验指导书
张龙
河北工程大学信电学院通信工程系
2012年12月
实验一熟悉MATLAB环境
[实验目的]
1.熟悉MATLAB主界面,学会常用的窗口的操作
2.学会简单的矩阵输入
3.熟悉MATLAB基本语句的使用、矩阵与向量的基本运算
[实验原理]
1. 用户第一次使用MATLAB时,可通过demo命令,启动MATLAB的演试程序,领略MATLAB所提供的强大的运算与绘图功能。
也可以键入help进行进一步了解。
2.MATLAB是以矩阵作为基本编程单元的一种程序设计语言。
它提供了各种矩阵的运算与操作,并有较强的绘图功能。
在MATLAB中输入矩阵最方便的的方式是直接输入矩阵的元素,其方法为:
1)用中括号[]把所有矩阵元素括起来;
2)同一行的不同数据元素之间用空格或逗号间隔;
3)用分号(;)指定一行结束;
4)也可以分成几行进行输入,用回车符代替分号;
5)矩阵元素可以是任何matlab表达式(系统将自动计算结果),可以是实数,也可以是复数,复数可用特殊函数i,j输入
。
3.MATLAB语言最基本的赋值语句结构为:
变量=表达式。
表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量(ans为默认)中并存放于workspace工作空间中以备调用。
[实验内容]
1.
(1)用空格或逗号输入矩阵A=[123;456;789]B=[9,8,7;6,5,4;3,2,1];C=[4,5,6;7,8,9;1,2,3];或A=[1,2,3;4,5,6;7,8,9]
(2)试用回车代替A中的分号,观察输出结果。
要求:
总结矩阵的输入
2.用edit或选择File|new菜单中的M-file进入编辑器,输入:
Base=[9,8,7;6,5,4;3,2,1];
Base_info=Base+1
保存为Base.m文件,并通过Debug中的run命令(或F5)运行之,观察有何异常现象。
要求:
解释异常现象的原因。
3.打开Workspace窗口,学习save及load命令的使用
(1)用save命令将上述输入的A、B、C三个变量存入data或data.mat文件;
(2)通过CurrentDirectory查找data;
(2)然后使用clc及clear命令;
(3)最后通过loaddata(或data.mat)命令(可通过向上的方向键找到上条save命令再修改成load命令的方法)将变量A、B、C调入Workspce;
(4)执行命令A+B+C
要求:
(1)观察使用上述命令后Workspce的变化;
(2)使用命令savedata_newAB-ascii(或ASCII),改变存储格式,重复上述过程(第2步查找data_new,第3步loaddata_new,第4步改为A+B),观察Workspce显示结果的不同;
(3)查看data_new,在data_new中取出A的值。
[实验报告要求]
针对实验内容中的各项要求,做出总结,给出实验报告。
实验二MATLAB数值运算及绘图功能
[实验目的]
1.掌握MATLAB特殊函数创建矩阵及利用已有矩阵创建新矩阵的方法
2.掌握矩阵的操作,矩阵之间的运算方法
3.学会使用常用的几种矩阵函数进行简单的问题求解
4.掌握plot基本绘图语句的使用
[实验原理]
一、利用MATLAB特殊函数创建矩阵
x=a:
b;x=linspace(a,b,n);
zeros(m,n);
ones(m,n)
;eye(m,n)等
randint(m,n):
m×n0,1等概率随机阵
rand(m,n):
m×n(0,1)间均匀分布随机阵
randn(m,n):
m×n均值为0,方差为1的标准正态分布随机阵
二、矩阵的操作
1.矩阵中元素的表示:
一是用两个下标来表示矩阵元素A(i,j),二是采用矩阵元素的索引值来引用矩阵元素-A(index)称序号(索引)表示法。
2.矩阵中元素的提取和修改
(1)矩阵元素的提取
矩阵A的第r行:
A(r,:
)
矩阵A的第r列:
A(:
,r)
取矩阵A的第i1~i2行、第j1~j2列,构成新矩阵:
A(i1:
i2,j1:
j2)
A的第i1~i2行,构成新矩阵:
A(i1:
i2,:
)
删除A的第j1~j2列,构成新矩阵:
A(:
,j1:
j2)=[]
将矩阵A和B拼接成新矩阵:
[AB];[A;B]
(2)矩阵元素的修改
可以利用下标对矩阵元素进行修改,可用find函数修改
3.矩阵中元素的数学运算
元素取整函数:
•round(A)%四舍五入取整
•fix(A)%将矩阵A中元素按离0近的方向取整
•floor(x)%向负无穷方向取整,即取不足整数
•ceil(x)%向正无穷方向取整,即取过剩整数
4.矩阵的一些特殊操作(旋转与变形)
•矩阵的变维
a=[1:
12];b=reshape(a,3,4)
c=zeros(3,4);c(:
)=a(:
)
•矩阵的变向
rot90:
旋转;fliplr:
左右翻;flipud:
上下翻
•矩阵的抽取
diag(D)%取D矩阵的主对角元素
X=diag(v)%以向量v为主对角线元素,其余元素为0构成矩阵X
a1=diag(A,1)%取A阵“第一上对角线”的元素
A1=diag(a1,-1)%产生以a1数组元素为“第一下对角线”元素的二维数组
•矩阵的扩展
repmat(D,1,3)%在水平方向“铺放”三个D阵
三、矩阵之间的运算
1.矩阵乘法:
A*B,只有当前一矩阵的列数和后一矩阵的行数相同或者其中一个为标量时才能进行。
2.矩阵除法:
运算符有两种“\”(左除)和“/”(右除),两矩阵相除,主要用于方程组求解。
A*x=B的解为x=A\B;x*A=B的解为x=B/A。
要解上述的联立方程式,可利用矩阵左除\做运算,即:
X=A\B,左除时要求A、B的行数相等。
四、常用的几个矩阵函数
n=numel(A)%计算矩阵A中元素的个
n=length(a)%计算向量中元素的个数
[m,n]=size(A)%返回矩阵的行列数
size(A,1)%返回矩阵的行数;size(A,2)%返回矩阵的列数
max、min—各列最大、最小值,
如:
[Y,I]=max(A)%返回各列最大值Y及最大值在各列的位置
mean各列平均值;sum各列求和;std各列标准差;
var各列方差;sort各列递增排序
[实验内容]
1.写出下列命令的运算结果,然后验证:
(1)A=[eye
(2);5:
5:
11]
(3)a=[1–2–45];b=(a>=-2&a<=5)
(4)a=linspace(-3,0,4);f=zeros(1,5);f(a+5)=a
(5)x=[7658104];y=find(x>4)
(6)m=[7658104];m(find(m>=7))=[]
2.熟悉矩阵的基本运算
(1)矩阵的基本数学运算
键入矩阵a,b
a=[12;03]
b=[34+3i;8+i10]
作如下运算,并记录结果。
V1=a+b
V2=sum(a)
V3=sum(b)
V4=a’
V5=a.’
V6=b’
V7=b.’(比较V4和V5有什么不同,V6和V7有什么不同)
V8=a*b
V9=a.*b(比较V8和V9有什么不同)
V10=a^2
V11=a/b(矩阵右除,常规除)
V12=a\b(矩阵左除,比较左除与右除的结果有什么不同)
3.利用randn函数建立3×3的矩阵:
(a)使用函数sum,分别求此矩阵第一列的和、第三行的和
(b)使用函数max,找出此矩阵中,最大的元素
4.按如下要求,绘制两条曲线,一条是余弦曲线
,另一条是按100Hz抽样频率对余弦曲线进行抽样得到的离散序列。
设t的时长为0.1s。
要求:
(1)在同一窗口中使用holdon命令绘出上述两条曲线,并设置图形属性如下:
连续曲线:
黑色,实线
抽样序列:
红色,虚线,宽为3个象素
图题为“连续余弦曲线及其抽样序列”,并加图例;
(2)使用subplot命令绘出上述两条曲线;
(3)交互式绘图方式将图题改为“余弦曲线”。
5.MATLAB的绘图修饰
(1)色彩、线型和数据点标志
x=0:
pi/50:
2*pi;
y=cos(x);
plot(x,y,'-.mo')%用品红色、点划线和数据标记点符号“o”来绘图
plot(x,y,'--g*')%用绿色、虚线和数据标记点符号“*”来绘图
(2)坐标轴的控制
x=0:
0.02:
5;
y=x.^2;
plot(x,y,'--g*')
axis([-1,11,-2,30]);%比较用此命令前后图形的区别
(3)坐标网格
在
(2)命令的基础上,加入命令:
gridon
可看到图形上的网格线。
(4)图形的标注和图例
x=linspace(0,pi,20);
y=sin(x);
z=cos(x);
w=x-0.5;
plot(x,y,'b:
',x,z,'r-',x,w,'-.b*');%绘图
xlabel('Xaxis');%x轴的标注
ylabel('functiony,zandw');%y,z,w轴的标注
title('ThreeFunction');%图形的标题
gridon
text(2,1,'y=sinx')%在点(6,-0.5)处标注
text(2,-0.3,'z=cosx')
gtext('w=x-0.5')
legend('y=sinx','z=cosx','w=x-0.5')%制作图例说明盒
[实验报告要求]
1.写出每一实验的设计过程及实验结果
2.总结实验,写出上机收获与体会
实验三MATLAB程序设计基础
[实验目的]
1.熟悉MATLAB的数据结构
2.熟悉流程控制语句的使用,搞清MATLAB中循环体与C语言的不同
3.掌握脚本与函数文件的编程方法
4.进一步掌握绘图语句的使用
[实验原理]
一、MATLAB的数据类型
在MATLAB中有六种常用基本数据类型:
double(双精度数值)
char(字符)
sparse(稀疏数据):
一般用于处理稀疏矩阵
storage(存储型):
只用于内存的有效存储
cell(单元数组):
struct(结构):
一般只在大型程序中使用
在MATLAB中,所有的数都用double浮点双精度类型来存储和运算。
因而省略了定义类型的语句,编程时无需去思考分辨,也减少了错误。
当然对于那些本来要用一两个字节来表示的变量来说,这种做法浪费内存,又降低了运算速度。
但用牺牲(存储)空间和(运算)时间来换取人机交互友善性的战略被证明是有效的,它形成了科学计算语言的特色,使人们不在编程的细节上花精力,而把注意力集中到科学计算的方法和建模合理性等大问题上去。
二、MATLAB的流程控制语句
与C语言类似,MATLAB程序的控制结构也有顺序结构、选择结构和循环结构三种,另外还有一种试探结构。
由于MATLAB以矩阵为运算单位,所以在for和while循环结构及分支结构的使用上与C略有不同,这是特别要注意的,希望通过本次实验加以理解。
1.for循环的格式
for循环可接受有效维数的数组作为循环变量
forx=array
commands;
end
For循环语句的执行过程:
当循环变量为矩阵时,其执行过程是从矩阵的第一列开始,依次将矩阵的各列之值赋值给变量,然后执行语句组中的语句,直到最后一列。
2.switch分支结构的格式
switchswitth_expr分支条件(数值或字符串)
case数值(或字符串)常量表达式1
<语句组1>
case{数值(或字符串)常量表达式case_expr2,数值(或字符串)常量表达式case_expr3…}
<语句组2>
case数值(或字符串)常量表达式N
<语句组n>
otherwise
<语句组n+1>
end
三、MATLAB的m文件
m文件是由MATLAB语句构成的ASCII码文件,用户可以用普通的文本编辑把一系列MATLAB语句写进一个文件里,给定文件名,确定文件的扩展名为.m,并存储。
m文件可分为两种:
1.脚本文件(Scripts):
也称命令文件,是由用户为解决特定的问题而编制的;
2.函数文件(Function):
子程序,可由用户编写,但它必须由其它m文件来调用
[实验内容]
1.按要求给出结果
(1)若有s=input(‘Pleaseinputa=’);给出运行时错误的输入方式:
A)2B)’John’C)[1234]D)John
(2)A=dec2bin(7,4)
(3)xf=[4300];
fork=0:
2
xshift(k+1,:
)=[zeros(1,k),xf(1:
end-k)];
end
xshift
2.使用switch语句编写DTMF(Dual-ToneMulti-Frequency)拨号音编码时域波形仿真程序。
说明:
(1)一个双音多频电话机可以对12个按键编码,每个码都是两个单频正弦信号之和,例如:
按键“5”由两个频率分别为770Hz和1336Hz的正弦信号组成;按键“#”分别由两个频率为941Hz和1447Hz的正弦信号组成。
这两个单频正弦信号分别来自两个频率组,即列频率组(或称低频群)与行频率组(或称高频群),它们与每个按键的对应关系如下图所示:
图1按键式拨号盘的配置
(2)DTMF信号的指标是:
在传送过程中每个按键数字占用100ms,其中DTMF必须存在至少40ms,且不得多于55ms,100ms里的其余时间是静声(无信号)。
要求:
(1)每输入一个数字给出相应的波形
key=input('pleaseinputkeyvaluve,0~9or#or*:
','s');
(2)fl表示低频率;fh表示高频率
(3)根据所拨数字用switch给定fl及fh的值
(4)主要参数如下:
fs=8000;%语音信号采样值
dt=1/fs;
t=0:
dt:
0.05;%按要求给出DTMF信号的时长
x=0.9*cos(2*pi*fl*t)+cos(2*pi*fh*t);
sound(x,8000)%按时长仿真发出的拨号音
plot(t,x)
zoomxon,gridon
3.创建一个函数文件,建立如下函数
给x,y由键盘赋值,采用调用方法计算f值,试编写程序(M文件),并以x=6,y=-3及x=-6,y=3二种情况运行,写出运行结果。
键盘赋值指令为:
x=input(‘x=?
’),该指令功能是由键盘结x赋值,运行该指令时,计算机暂停下来输出提示:
x=?
用户从键盘键入值后按回车键,即可将从键盘键入值赋给变量x)
4.分别使用while和for编写命令文件,用循环语句编程计算s值:
[实验报告要求]
1.写出每一实验的设计过程
2.总结实验,写出相应的体会
3.总结程序调试常用技巧
实验五线性系统分析、simulink仿真
一、实验目的
1.掌握离散时间信号的MATLAB表示
2.掌握线性系统描述方法,线性系统的时间响应分析和频响分析;
3.掌握线性时不变系统的各种描述方式,线性时不变系统的响应。
4.掌握线性时不变系统的频响。
5.掌握IIR数字滤波器的设计方法及MATLAB实现
3.应用simulink建立线性系统仿真模型,掌握仿真步骤.
二、实验原理
1.线性系统描述
系统的传递函数描述
在matlab中用二个向量num和den表示该系统
num=[am-1,am-2,…,a0]
den=[bn-1,bn-2,…,b0]
2.线性系统的时间响应分析
阶跃响应
y=step(a,b,c,d,iu,T)
T为等间隔的时间向量.
3.线性系统的频响分析
Bode(波特)图
(1)bode(num,den,w)%直接得到bode图
(2)[m,p]=bode(num,den,)%得到幅值m,相角p,为频率(rad/sec).
4.simulink
simulink是matlab软件中的数字仿真工具.是一个用来对动态系统进行建模、仿真和分析的集成环境.
模型的建立:
(1)在matlab命令窗口中:
File/New/model建立一个名为‘untitled’的模型窗口.等建好系统模型后,再由用户命名保存.
(2)将功能模块由模块库中’拖出’(复制)到模型窗口,对模块进行连接,从而构成需要的系统模型.
(3)设置功能模块参数,设置仿真参数.
(4)仿真运行.
三、实验内容
教材p183页,习题8,9,10等题。
四、实验要求
1.预习实验原理.
2.对实验内容编程或建模,上机运行,记录运行结果(图或曲线或数据).
3.写出实验报告
实验五MATLAB在通信系统仿真中的应用
[实验目的]
1.掌握信源随机二进制信号的产生方法
2.了解数字信号复数映射的方法
3.了解信道编码的仿真方法
4.了解噪声信道和多径信道的仿真方法
5.熟悉利用MATLAB仿真通信系统的基本过程
[实验原理]
一、数字通信系统基本组成
常用的数字通信系统基带传输模型如图5-1所示:
5-1数字通信系统基带传输模型
二、数字通信系统基本传输的仿真
根据上述模型需完成以下仿真过程:
1.随机二进制0、1信源信号的产生
随机信号经常用来模拟噪声、错误或信号源。
除了MATLAB的内置函数rand和randn,通信工具箱还提供randint函数。
格式如下:
out=randint(m,n)
功能说明:
产生m×n的矩阵,其元素相互独立,取值范围为1或0,取值是等概的。
2.信道的仿真方法
(1)高斯白噪声信道
高斯过程又称正态随机过程,它是一种普遍存在和重要的随机过程,在通信信道中的噪声,通常是一种高斯过程,故又称为高斯噪声。
利用awgn函数可为信号叠加高斯白噪声,其常见的使用格式说明如下:
①y=awgn(x,snr)
%addswhiteGaussiannoisetothevectorsignalx.Thescalarsnrspecifiesthesignal-to-noiseratiopersample,indB.Ifxiscomplex,thenawgnaddscomplexnoise.Thissyntaxassumesthatthepowerofxis0dBW.
②y=awgn(x,snr,'measured')
%Itisthesameasy=awgn(x,snr),exceptthatawgnmeasuresthepowerofxbeforeaddingnoise
本次实验采用第二种方法。
(2)多径衰落信道
在仿真过程中,若以抽样的序列来表示信号,多径的影响可以表示如下:
其中
是第i条路径的衰落值,可以用一个信道向量表示为
,其中
表示延迟
个码元信道的平均衰落。
举例说明,用信道向量[100000.5]来表示莱斯多径,它意味着电磁波通过一个没有延迟,没有衰落的信道;和一个延迟为5个码元,衰落系数为0.5的信道。
在这样的两径信道里,接收信号为:
在仿真噪声及多径对信号的影响,可先对信号加噪,再做多径处理,表示为:
其中
是信道向量决定的滤波器。
在MATLAB中可使用函数filter(Multipath,1,BaseSignal)给信号BaseSignal按Multipath所代表的多径向量加多径。
3.数字信号的调制映射
数字信号的调制映射的基本思想是将二进制序列,分成长度为n=1、2、4的组,分别对应BPSK、QPSK、16QAM。
然后再把这些二进制序列组分别映射为星座图中对应点的复数表示,其映射采用如图5-2所示的星座映射图。
由图5-2可得知,BPSK调制将0和1映射为2个点;正交振幅调制(16QAM)是将每四位比特流映射映射成星座坐标图中的16个点中的一个;QPSK将每两位比特流映射成星座坐标图中的4个点中的一个,其中有GRAYmapping和Naturalmapping。
Graympping表示按格雷码方式映射,Naturalmapping表示按自然码方式映射。
图5-2BPSK、QPSK、16QAM比特编码映射图
在星座图中,每个点的横坐标对应于该点的实部,纵坐标对应该点的虚部,这样通过星座映射将0,1比特流转换成了复数信号流。
如若对011比特流进行BPSK调制映射,则变成1+0j,-1+0j,-1+0j。
[实验内容]
1.编写随机解交织derandperm_inter和行列式解交织函数delincol_inter,其格式如下:
Data_out=delincolinter(Data_in,alpha);
%delincolinter行列解交织函数
%待解交织的序列Data_in
%alpha表示发送端行列序列号的交织向量
%解交织后的序列Data_out
2.编写函数mappingBPSK完成BPSK映射及demappingBPSK函数完成逆映射,格式如下:
BPSKCode=mappingBPSK(Xframe)
%mappingBPSK完成BPSK编码映射
%Xframe待编码映射的序列
%BPSKCode编码映射后的序列
deBPSKCode=demappingBPSK(PskCode)
%demappingBPSK完成BPSK编码逆映射
3.利用randint(1,data)产生0,1等概的二进制信源信息,然后调用BPSK映射mappingBPSK及逆映射demappingBPSK函数,并通过信号分析函数biterr,检验所编的映射和逆映射函数的正确性。
注:
biterr
格式:
Error=biterr(data_in,data_out)
功能:
biterr计算data_in,data_out之间的误比特数Error。
4.根据图5-1所示数字通信系统基带传输模型的信号流程,在下述条件下完成以下两项内容:
(1)比较随机交织抗噪及抗多径性能(用SNR-BER关系图来表示);
(2)比较随机交织与行列式交织的抗噪性能(用SNR-BER关系图来表示)。
Xframe_Len=256;%帧长
SNRdB=0:
10;%分贝表示的信噪比
行列交织:
行m=16,列n=17的方式读入并按列读出
Nframe=100%测试100帧信号总的误比特率
[实验报告要求]
写出每一实验的设计过程,并总结实验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信工程 MATLAB 上机 实验 指导书