MATLAB通信系统仿真实验报告

  • 格式:docx
  • 大小:177.67 KB
  • 文档页数:32

MATLAB通信系统仿真实验报告

专业年级

姓名

学号

指导教师

实验学时

实验时间

实验地点 实验一、MATLAB的基本使用与数学运算

目的:学习MATLAB的基本操作,实现简单的数学运算程序。

内容:

1-1 要求在闭区间[0,2π]上产生具有10个等间距采样点的一维数组。试用两种不同的指令实现。

运行代码:x=[0:2*pi/9:2*pi]

运行结果:

1-2 用M文件建立大矩阵x

x=[ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9]

代码:x=[ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9]

m_mat 运行结果:

1-3已知A=[5,6;7,8],B=[9,10;11,12],试用MATLAB分别计算A+B,A*B,A.*B,A^3,A.^3,A/B,A\B.

代码:A=[5 6;7 8] B=[9 10;11 12] x1=A+B X2=A-B X3=A*B X4=A.*B X5=A^3 X6=A.^3

X7=A/B X8=A\B

运行结果:

1-4任意建立矩阵A,然后找出在[10,20]区间的元素位置。

程序代码及运行结果:

代码:A=[12 52 22 14 17;11 10 24 03 0;55 23 15 86 5 ] c=A>=10&A<=20

运行结果: 1-5 总结:实验过程中,因为对软件太过生疏遇到了些许困难,不过最后通过查书与同学交流都解决了。例如第二题中,将文件保存在了D盘,而导致频频出错,最后发现必须保存在MATLAB文件之下才可以。第四题中,逻辑语言运用到了ij,也出现问题,虽然自己纠正了问题,却也不明白错在哪了,在老师的讲解下知道位置定位上不能用ij而应该用具体的整数。总之第一节实验收获颇多。实验二、MATLAB程序的编写

目的:掌握顺序结构、选择结构、循环结构程序设计方法。学会编写函数。

内容:

2-1编写程序,建立向量N=[1,2,3,4,5],然后利用向量N产生下列向量;

(1)2,4,6,8,10

(2)1/2,1,3/2,2,5/2

(3)1,1/2,1/3,1/4,1/5

(4)1,1/4,1/9,1/16,1/25

代码:N=[1,2,3,4,5] X1=N*2 X2=N/2 X3=1./N X4=X3*X3

运行结果:

2-2从键盘输入一个三位整数,将他反向输出,如输入为639,输出为936.输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

要求:

(1)分别用if语句

代码:clear

m=input('请输入一个三位数:')

m1=fix(m/100);

m2=rem(fix(m/10),10); m3=rem(m,10);

n=m1+m2*10+m3*100;

disp(n);

(2)clear;

Mark=input('请输入成绩:');

Rank=cell(1,5);

S=struct('Marks',Mark, 'Rank',Rank);

for i=1:10;

a{i}=89+i;

b{i}=79+i;

c{i}=69+i;

d{i}=59+i;

e{i}=0+i;

q{i}=9+i;

g{i}=19+i;

h{i}=29+i;

m{i}=39+i;

n{i}=49+i; end;

for i=1:5;

switch S(i).Marks

case 100

S(i).Rank='A';

case a

S(i).Rank='A';

case b

S(i).Rank='B';

case c

S(i).Rank='C';

case d

S(i).Rank='D';

case e

S(i).Rank='E';

case q

S(i).Rank='E';

case g S(i).Rank='E';

case h

S(i).Rank='E';

case m

S(i).Rank='E';

case n

S(i).Rank='E';

otherwise

S(i).Rank='成绩输入错误';

end

end

disp([num2str(S(i).Marks),blanks(3),S(i).Rank]);disp('');

运行结果:

2—3输入20个两位随机数,求其中的最大数最小数。要求分别用循环结构和调用MATLAB的max函数、min函数实现。

(1)a=fix(rand(1,20)*100) ma=max(a) mi=min(a)

运行结果:

(2)a=fix(rand(1,20)*100);

for i=1:20; max=a(1);

min=a(1);

if max

max=a(i);

end

if min>a(i);

min=a(i);

end

end

max

min

运行结果:

2-6写出下列程序输出结果

(1) s=0;

a=[12,13,14;15,16,17;18,19,20;21,22,23];

for k=a

for j=1:4 if rem(k(j),2)~=0

s=s+k(j);

end

end

end

s

运行结果:

(2) global x

x=1:2:5;

y=2:2:6;

sub(y);

x

y

(3) function fun=sub(z)

global x

z=3*x; x=x+z;

运行结果:

总结:第二次实验,对软件的使用比较熟练了,但还是遇到了些许问题。在运算符号的使用中,应当注意“.*”的使用,在最初因为不太会运用遇到了些困难,后来通过同学讨论和翻阅课本找到了答案。2—2中的第二种方法是按照课本例题改编的,有些啰嗦,不多至少是结果正确。还有2—6中刚开始没能正常输出,在老师的指导下知道(2)(3)是一起使用,算是运用到了函数调用。好在最后所有题目都得到了满意的结果。实验三、MATLAB图形处理

目的:能够根据数据绘制各种形状的二、三维图形。

3-1绘制曲线y=x^3+x+1,x的取值范围为[-5,5]

代码:

x=-5:0.01:5

y=x.^3+x+1

plot(x,y)

运行结果:

3-4有一组测量数据满足y=exp(-a*t),t的变化范围为0~10,用不同的线性和标记点画出a=0.1,a=0.2和a=0.5 三种情况下的曲线。

代码:

t=0:0.1:10;

y1=exp(-0.1*t);

y2=exp(-0.2*t); y3=exp(-0.5*t);

title('t from 0 to 10');

plot(t,y1,t,y2,t,y3);

xlabel('Variable t');

ylabel('Variable y');

text(0.8,1.5,'曲线y1=exp^{-0.1t}');

text(2.5,1.1,'曲线y1=exp^{-0.2t}');

text(0.8,1.5,'曲线y1=exp^{-0.5t}');

legend('y1','y2','y3')

运行结果:

3-7绘制饼图,x=[66 49 71 56 38],并将第五个切块分离出来。

代码:

x=[66 49 71 56 38]; subplot(1,2,1);

pie(x);

subplot(1,2,2);

pie(x,[0,0,0,0,1]);

运行结果:

总结:这次实验,比较有成就感,并没有遇到什么太复杂的困难,但是软件操作上出现了写麻烦,一不小心将软件页面的各个功能窗口关上了,颇费周折终于找到了那些功能窗口,但是整个页面都有些混乱。好在还是将题目做了出来,图出现的时候感觉特别有成就感。真的说明一件事情,英语学不好很麻烦啊。实验四、MATLAB仿真模拟调制

目的:能用MATLAB仿真调幅信号和调角信号。

5-1 用在区间[0,2]内的信号

m(t)=t 0<=t<=1;m(t)=-t+2 1<=t<=2;

以DSB-AM方式调制一个载波频率为25HZ、幅度为1的载波产生已调信号u(t)。写一个Matlab的M文件,并用该文件作下面的题:

(1) 画出已调信号;

(2) 求已调信号的功率;

(3) 求已调信号的振频谱,并与消息信号m(t)的频谱作比较。

程序代码:

dt=0.01; %时间采样间隔

fc=25;

T=1;

N=floor(T/dt);

t1=[0:N]*dt;

t2=t1+1;

%t=[t1 t2];

mt1=t1; %信源

mt2=-t2+2;