MATLAB实验指导书(通信工程).doc
- 文档编号:347880
- 上传时间:2023-04-29
- 格式:DOC
- 页数:73
- 大小:1.51MB
MATLAB实验指导书(通信工程).doc
《MATLAB实验指导书(通信工程).doc》由会员分享,可在线阅读,更多相关《MATLAB实验指导书(通信工程).doc(73页珍藏版)》请在冰点文库上搜索。
安庆师范学院
MATLAB实验指导书
计算机与信息学院通信工程专业
45
第页
实验一Matlab软件初步入门
一、实验目的
1、了解Matlab语言的基本功能和特点
2、熟悉Matlab的基本界面
3、了解Matlab的路径搜索
二、实验仪器
1、计算机
2、MATLAB软件环境
三、实验原理
1Desktop操作桌面的启动
启动matlab
2CommandWindow操作应用,熟悉操作桌面各个窗口的功能和位置。
四、注意事项
注意常用操作命令和快捷键以及命令窗口中的标点符号命令使用。
五、实验内容
1、熟悉MATLAB主界面,工具栏及各窗口;
2、完成MATLAB的路径搜索;
3、熟悉MATLAB的数据类型、表达式、函数、常用命令和快捷键。
掌握指令窗的使用
1题:
在matlab环境下运用以下指令,以便初步了解关于常数的预定义变量。
重点掌握各常数的含义。
formatshorte
RMAd=realmax('double') %双精度类型(默认)时最大实数
RMAs=realmax('single') %单精度类型时最大实数
RMAd=
1.7977e+308
RMAs=
3.4028e+038
IMA64=intmax('int64') %int64整数类型时最大正整数
IMA32=intmax %int32(默认)整数类型时最大正整数
IMA32=intmax('int16') %int16整数类型时最大正整数
IMA64=
9223372036854775807
IMA32=
2147483647
IMA32=
32767
e1=eps %双精度类型时的相对精度
e2=eps
(2) %表达2时的绝对精度
e1=
2.220446049250313e-016
e2=
4.440892098500626e-016
pi
ans=
3.141592653589793
使用CommandHistory历史指令窗
历史指令窗记录着:
每次开启MATLAB的时间,及开启MATLAB后在指令窗中运行过的所有指令行。
该窗不但能清楚地显示指令窗中运行过的所有指令行,而且所有这些被记录的指令行都能被复制,或再运行。
关于历史指令窗的功能详见表1-1。
表1-1历史指令窗主要应用功能的操作方法
应用功能
操作方法
简捷操作方法
单行或多行指令的复制
点亮单行或多行指令;按鼠标右键引出现场菜单;选中{Copy}菜单项,即可用复合键[Ctrl+V]把它“粘贴”到任何地方(包括指令窗)。
单行指令的运行
点亮单行指令;按鼠标右键引出现场菜单;选中{EvaluateSelection}菜单项,即可在指令窗中运行,并见到相应结果。
鼠标左键双击单行指令。
多行指令的运行
点亮多行指令;按鼠标右键引出现场菜单;选中{EvaluateSelection}菜单项,即可在指令窗中运行,并见到相应结果。
(详见例1.5-1)
把多行指令写成M文件
点亮多行指令;按鼠标右键引出现场菜单;选中{CreateM-File}菜单项,就引出书写着这些指令的M文件编辑调试器;再进行相应操作,即可得所需M文件。
2题:
画出衰减振荡曲线,的取值范围是
t=0:
pi/50:
4*pi; %定义自变量t的取值数组
y=exp(-t/3).*sin(3*t); %计算与自变量相应的y数组。
注意:
乘法符前面的小黑点。
plot(t,y,'-r','LineWidth',2) %绘制曲线
axis([0,4*pi,-1,1])
xlabel('t'),ylabel('y')
演示如何再运行给定例题中的中的全部绘图指令
CurrentDirectory路径设置器和文件管理
3题:
搜索一个名为eps的指令,看看会得出什么结果?
工作空间浏览器和变量编辑器
4题:
画出衰减振荡曲线,的取值范围是(配图1.3-4)。
本例演示:
展示数组运算的优点;展示MATLAB的可视化能力。
程序如下:
t=0:
pi/50:
4*pi; %定义自变量t的取值数组
y=exp(-t/3).*sin(3*t); %计算与自变量相应的y数组。
注意:
乘法符前面的小黑点。
plot(t,y,'-r','LineWidth',2) %绘制曲线
axis([0,4*pi,-1,1])
xlabel('t'),ylabel('y')
然后通过“工作空间浏览器”的运作,采用图形显示内存变量t和y之间的关系图形。
按照书中所给的步骤操作一下matlab的帮助系统,了解它的使用。
六、实验报告要求
根据自己上机的内容,将实验内容填写在实验报告中。
实验二数值数组及向量化运算
一、实验目的:
掌握:
数组的创建方法;数组的标识与寻访;数组的运算;关系操作和逻辑操作。
了解:
“非数”NaN和“空”数组。
二、实验仪器:
1、计算机
2、MATLAB软件环境
三、实验原理
在matlab环境中创建和寻访一维、二维数组及其运算,关系操作和逻辑操作;“非数”NaN和“空”数组的应用。
四、注意事项
数组浮点算法的特点及其运算和编程的规则。
五、实验内容
1一、二维数值数组的创建和寻访;
2数组运算;
3“非数”NaN和“空”数组;
4关系操作和逻辑操作。
1题:
一维数组的常用创建方法
a1=1:
6
a2=0:
pi/4:
pi
a3=1:
-0.1:
0
b1=linspace(0,pi,4)
b2=logspace(0,3,4)
c1=[2pi/2sqrt(3)3+5i]
rand('twister',0)
c2=rand(1,5)
2题:
数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。
A=zeros(2,6)
A(:
)=1:
12
A(2,4)
A(8)
A(:
[1,3])
A([1,2,5,6]')
A(:
4:
end)
A(2,1:
2:
5)=[-1,-3,-5]
B=A([1,2,2,2],[1,3,5])
L=A<3
A(L)=NaN
3题:
非数的产生和性质
(1)
a=0/0,b=0*log(0),c=inf-inf
(2)
0*a,sin(a)
(3)
class(a)
isnan(a)
4题:
“空”数组的创建
a=[]
b=ones(2,0),c=zeros(2,0),d=eye(2,0)
f=rand(2,3,0,4)
5题:
逻辑和关系操作
(1)逻辑关系操作的组合
A=[-2,-1,0,0,1,2,3]
L1=~(A>1)
L2=(A>0)&(A<2)
(2)xor的作用
A,B=[0,-1,1,0,1,-2,-3]
C=xor(A,B)
A=1:
9,B=10-A
r0=(A<4)
r1=(A==B)
六、实验报告要求
将实验命令和操作答案填写与报告中。
实验三MATLAB程序设计与调试
一、实验目的
1.掌握M脚本文件和M函数文件的编写;
2.掌握程序流程控制结构,能够进行简单程序设计;
3.掌握程序调试的方法。
二、实验内容与步骤
1、分别编写求取平均值与标准差的脚本文件和函数文件;
关于M脚本文件和M函数文件
MATLAB的M文件有两类:
脚本文件和函数文件。
(1)脚本文件——将原本要在MATLAB的指令窗口中直接输入的语句,放在一个以.m为后缀的文件中,这一文件就称为脚本文件。
有了脚本文件,可直接在MATLAB中输入脚本文件名(不含后缀),这时MATLAB会打开这一脚本文件,并依次执行脚本文件中的每一条语句,这与在MATLAB中直接输入语句的结果完全一致。
(2)函数文件——它的第一行必须是函数定义行。
M函数文件由5部分构成:
◆函数定义行
◆H1行
◆函数帮助文本
◆函数体
◆注释
functiony=mean(x)
% MEANAverageormeanvalue.
% Forvectors,MEAN(X)isthemeanvalueoftheelementsinX.
% Formatrices,MEAN(X)isarowvectorcontainingthemean
% valueofeachcolumn.
%
[m,n]=size(x);
ifm==1
%Determinewhetherxisavector
m=n;
end
y=sum(x)/m;
①函数定义行:
functiony=mean(x)
function为函数定义的关键字,mean为函数名,y为输出变量,x为输入变量
当函数具有多个输出变量时,则以方括号括起;
当函数具有多个输入变量时,则直接用圆括号括起。
例如:
function[x,y,z]=sphere(theta,phi,rho)
当函数不含输出变量时,则直接略去输出部分或采用空方括号表示
例如:
functionprintresults(x)或function[]=printresults(x)
所有在函数中使用和生成的变量都为局部变量(除非利用global语句定义),这些变量值只能通过输入和输出变量进行传递。
因此,在调用函数时应通过输入变量将参数传递给函数;函数调用返回时也应通过输出变量将运算结果传递给函数调用者;其它在函数中产生的变量在返回时被全部清除。
②H1行:
描述了函数的“功能”信息(很重要!
)
注意:
在函数文件中,除了函数定义行之外,其它部分都是可以省略的。
但作为一个函数,为了提高函数的可用性,应加上H1行和函数帮助文本,为了提高函数的可读性,应加上适当注释。
函数文件中第二行一般是注释行,这一行称为H1行,实际上它是帮助文本中的第一行。
H1行不仅可以由helpfuntion-name命令显示,而且,lookfor命令只在H1行内搜索,
③函数帮助文本:
用来比较详细地说明这一函数的用法
以%开头,输入时helpfuntion-name命令,可显示出H1行和函数帮助文本
④函数体:
完成指定功能的语句实体
可采用任何可用的MATLAB命令,包括MATLAB提供的函数和用户自己设计的M函数。
⑤注释
★备注:
●函数定义名和保存文件名必须一致。
两者不一致时,MATLAB将忽视文件首行的函数定义名,而以保存文件名为准;
●函数文件的名字必须以字母开头,后面可以是字母、下划线以及数字的任意组合,但不得超过63个字符;
●建议在编写H1行时,采用英文表达。
这样处理是为了以后关键词检索方便。
(3)脚本文件和函数文件比较
脚本文件
函数文件
定义行
无需定义行
必须有定义行
输入/输出变量
无
有
数据传送
直接访问基本工作空间中的所有变量
通过输入变量获得输入数据;
通过输出变量提交结果
编程方法
直接选取MATLAB中执行的语句
精心设计完成指定功能
用途
重复操作
MATLAB功能扩展
函数文件去掉其第一行的定义行,就转变成了脚本文件。
但这样一来使用的局部变量就成了基本工作空间中的变量,这会带来几个问题:
◆基本工作空间中与脚本文件中同名的变量会引起冲突
◆使基本工作空间中变量数急剧增加,造成内存紧张
◆编程时要细心考虑各个脚本文件所用到的变量
这些问题在函数文件中不复存在,MATLAB通过实参与形参一一对应的方式来实现函数的调用,这极大地方便了程序设计。
举例说明:
分别编写出求取平均值与标准差的脚本文件state1.m和函数文件state2.m
state1.m
%脚本文件
%求阵列x的平均值和标准差
[m,n]=size(x);
ifm==1
m=n;
end
s1=sum(x);
s2=sum(x.^2);
mean1=s1/m;
stdev=sqrt(s2/m-mean1.^2);
state2.m
function[mean1,stdev]=state2(x)
%函数文件
%求阵列x的平均值和标准差
[m,n]=size(x);
ifm==1
m=n;
end
s1=sum(x);
s2=sum(x.^2);
mean1=s1/m;
stdev=sqrt(s2/m-mean1.^2);
在命令窗口依次输入如下命令:
clear
x=rand(1,100)+2;
state1 %执行stat1.m后,观察基本空间中的变量情况
whos %可见:
脚本文件所产生的所有变量都返回了工作空间
★备注:
1)运行脚本文件,产生的所有变量都驻留在MATLAB基本工作空间(Baseworkspace),只要不使用clear且不关闭指令窗口,这些变量将一直保存着。
(基本工作空间随MATLAB的启动而产生,只有关闭MATLAB时,该基本空间才被删除。
)
2)运行函数文件,MATLAB就会专门开辟一个临时工作空间,称为函数工作空间(Functionworkspace),所有中间变量都存放在函数工作空间中,当执行完最后一条指令或遇到return时,就结束该函数文件的运行,同时该临时函数工作空间及其所有中间变量就立即被清除。
(函数工作空间随具体M函数文件的被调用而产生,随调用结束而删除。
函数工作空间是相对基本工作空间对立的、临时的。
在MATLAB这个运行期间,可以产生任意多个临时函数工作空间,而基本工作空间。
)
3)如果在函数文件中,调用了某脚本文件,那么该脚本文件运行所产生的所有变量都放在该函数工作空间中,而不是放在基本工作空间中。
2、分支结构
(a)if-else-end分支结构
语法形式:
ifexpression1
(commands1)
elseifexpression2
(commands2)
……
elsecommandsk)
ifexpression
(commands)
end
(b)switch-case结构
语法形式:
switchvar
casetest1
(commands1)
casetest2
(commands2)
……
casetestk
(commandsk)
otherwise
(commands)
(c)显示学生成绩等级的程序:
var1=input('var1='); %让用户通过键盘输入数值、字符串或表达式
switchvar1
case{-2,-1}
disp('var1isnegativeoneortwo.')
case0
disp('var1iszero.')
case{1,2,3}
disp('var1ispositiveone,two,orthree.')
otherwise
disp('var1isothervalue.')
end
3、循环语句
(a)for循环结构:
完成指定次重复的循环
语法形式:
forx=array % x——循环变量,依次取数组array的各列
(commands) % commands——循环体,重复执行的次数是确定的,
end
(b)while循环结构:
完成不定次重复的循环
语法形式:
whileexpression
(commands)
end
(c)使用for循环来寻求Fibonacci数组中第一个大于10000的元素:
n=100;a=ones(1,n);
fori=3:
n
a(i)=a(i-1)+a(i-2);
ifa(i)>=10000
a(i)
break;%跳出所在的一级循环。
end;
end;
i
4、MATLAB程序调试
MATLAB的调试器(Debugger)可帮助找出编程中的错误,使用调试器可在执行中随时显示出工作空间的内容,查看函数调用的栈关系,并且可单步执行M函数代码。
MATLAB程序调试主要用来纠正两类错误:
◆格式错误:
比如函数名的格式错误、缺括号等,MATLAB可在运行程序时检测出大多数格式错误,并显示出出错信息和出错位置。
这类错误可很容易找到,并加以纠正。
◆运行错误:
这些错误通常发生在算法和设计错误上,例如修改了错误的变量,计算不正确等。
运行错误一般不易找出位置,因此要利用调试器工具来诊断。
实验四数值计算
一、实验目的
掌握:
函数极值的数值求解;常微分方程的数值解;矩阵运算和特征参数;矩阵的变换和特征值分解;线性方程的解;一般代数方程的解及多项式运算。
二、实验仪器
1、计算机
2、MATLAB软件环境
三、实验原理
在matlab环境中求解数组微积分,矩阵和代数方程及其多项式的运算。
四、注意事项
注意求解各方程指令的使用并在英文状态下输入。
五、实验内容
1数值微积分
2矩阵和代数方程
3多项式运算和卷积
1题:
已知x=sin(x),求该函数在区间[0,2pi]中的近似导函数。
本例演示:
自变量增量的适当取值对数值导函数精度的影响。
(1)增量取得过小
d=pi/100;
t=0:
d:
2*pi;
x=sin(t);
dt=5*eps; %
x_eps=sin(t+dt);
dxdt_eps=(x_eps-x)/dt; %
plot(t,x,'LineWidth',5)
holdon
plot(t,dxdt_eps)
holdoff
legend('x(t)','dx/dt')
xlabel('t')
图1增量过小引起有效数字严重丢失后的毛刺曲线
(2)增量取得适当
x_d=sin(t+d);
dxdt_d=(x_d-x)/d; %
plot(t,x,'LineWidth',5)
holdon
plot(t,dxdt_d)
holdoff
legend('x(t)','dx/dt')
xlabel('t')
图2增量适当所得导函数比较光滑
2题:
矩阵标量特征参数计算。
演示:
rank,det,trace的使用;子行列式的计算。
A=reshape(1:
9,3,3)
r=rank(A)
d3=det(A)
d2=det(A(1:
2,1:
2))
t=trace(A)
3题:
行阶梯阵简化指令rref计算结果的含义
(1)对4阶魔方阵进行rref分解
A=magic(4) %
[R,ci]=rref(A) %
(2)ci的含义
r_A=length(ci)
(3)R的含义
aa=A(:
1:
3)*R(1:
3,4) %
err=norm(A(:
4)-aa) %
六、实验报告要求
根据自己上机的内容,将实验内容填写在实验报告中。
实验五符号计算
一、实验目的
掌握符号变量和符号表达式的创建,掌握MATLAB的symbol工具箱的一些基本应用。
二、实验内容
(1)符号变量、表达式、方程及函数的表示。
(2)符号微积分运算。
(3)符号表达式的操作和转换。
(4)符号微分方程求解。
三、实验步骤
1.符号运算的引入
在数值运算中如果求,则可以不断地让x接近于0,但不能得到精确结果,MATLAB的符号运算能解决这类问题:
f=sym('sin(pi*x)/x')
limit(f,'x',0)
2.符号常量、符号变量、符号表达式的创建
1)使用sym()创建
输入以下命令,观察Workspace中A、B、f是什么类型的数据,占用多少字节的内存空间。
A=sym('1')
B=sym('x')
f=sym('2*x^2+3*y-1')
clear
f1=sym('1+2')
f2=sym(1+2)
f3=sym('2*x+3')
通过看MATLAB的帮助可知,sym()的参数可以使字符串或数值类型,无论是哪种类型都会生成符号类型数据。
2)使用syms创建
symsxyz
x,y,z
f1=x^2+2*x+1
f2=exp(y)+exp(z)^2
f3=f1+f2
3.符号矩阵创建
例:
symsa1a2a3a4
A=[a1a2;a3a4]
A
(1),A(3)
symsa1a2a3a4
A=[a1a2;a3a4]
4.符号算术运算
1)符号量相乘、相除
符号量相乘运算和数值量相乘一样,分成矩阵乘和数组乘。
a=sym(5);b=sym(7);
c1=a*b
c2=a/b
a=sym(5);B=sym([345]);
C1=a*B,C2=a\B
symsab
A=[5a;b3];B=[2*ab;2*ba];
C1=A*B,C2=A.*B
C3=A\B,C4=A./B
2)符号数值任意精度控制和运算
任意精度的VPA运算可以使用命令digits(设定默认的精度)和vpa(对指定对象以新的精度进行计算)来实现。
a=sym('2*sqrt(5)+pi')
b=sym(2*sqrt(5)+pi)
digits
vpa(a)
digits(15)
vpa(a)
c1=vpa(a,56)
c2=vpa(b,56)
5.独立变量的确定原则
独立变量的确定原则:
在符号表达式中默认变量是唯一的。
MATLAB会对单个英文小写字母(除i、j)进行搜索,且以x为首选独立变量。
如果表达式中字母不唯一,且无x,就选在字母表顺序中最接近x的字母。
如果有相连的字母,则选择在字母表中较后的那一个。
例如:
中,y是默认独立变量。
中,t是默认独立变量。
clear
f=sym('a+b+i+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 实验 指导书 通信工程