MATLAB上机指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB上机指导书
电子信息工程专业
2019年10月
目录
前言
实验一MATLAB基础知识 1 实验二矩阵与数组 6 实验三基本操作命令9 实验四高级操作命令11 实验五MATLAB的M函数编程
14
实验六MATLAB绘图15
前言
MATLAB的名称源自Matrix Laboratory,是一门计算语言,它专门以矩阵的形式处理数据.MATLAB将计算与可视化集成到一个灵活的计算机环境中,并提供了大内置函数,可以在广泛的工程问题中直接利用这些函数获得数值解.此外,用MATLAB 编写程序,犹如在一张草稿纸上排列公式和求解问题一样效率高,因此被称为“演算纸式的”科学工程算法语言.在我们高等数学的学习过程中,可以结合MATLAB 软件,做一些简单的编程应用,在一定程度上弥补我们常规教学的不足,同时,这也是我们探索高职高专数学课程改革迈出的一步.
实验一 MATLAB 基础知识
一、实验目的
1、MATLAB 的使用初步练习
2、MATLAB 的窗口组成 二、实验内容
1、掌握表达式的输入方法
2、MATLAB 的常量及其表示方法
3、分号、百分比号、逗号及省略号的用法
4、向量和矩阵的处理方式;常用的数学函数;搜索路径的概念;MATLAB 的帮
助功能。

三、实验仪器、设备和材料
1、微型计算机,能正常运行Matlab 6.0或以上版本
2、Matlab6.0或以上版本 四、实验原理
略(参考教材的相关部分) 五、实验步骤
1、MATLAB 文件的编辑、存储和执行
MATLAB 提供了两种运行方式,即命令行和M 文件方式. A .命令行方式
直接在命令窗口输入命令来实现计算或作图功能. 例如,若要求表达式
的值,我们可在MATLAB 命令窗口中键入下面的命令:
>> 1.369^2+sin(7/10*pi)*sqrt(26.48)/2.9 (回车) 观测运行结果并解释原因(3.3097)
也可将计算的结果赋给某一个变量,例如输入 :
>> a=1.369^2+sin(7/10*pi)*sqrt(26.48)/2.9 (回车) 观测运行结果并解释原因 B .M 文件的运行方式
1)文件编辑 在MATLAB 窗口中单击File 菜单依次选择NewM-File,打开M 文件输入运行界面,如下图所示。

此时屏幕上会出现所需的窗口,在该窗口中输入程序文件,可以进行调试和运行.与命令行方式相比,M 文件方式的优点是可以调试,可重复应用.
2)文件存储 单击File 菜单,选择Save 选项,可将自己所编写的程序存在一个后缀为m 的文件中.
9
.248.26107
sin 369.12÷⨯+π
3)运行程序在M文件窗口中选择Debug菜单中的run选项,即可运行此M 文件;也可在MATLAB命令窗口中直接输入所要执行的文件名后回车即可.但需要的是该程序文件必须存在MATLAB默认的路径下.用户可以在MATLAB窗口中单击File菜单选择Set Path将要执行的文件所在的路径添加到MATLAB默认的路径序列中.
2、MATLAB基本运算符及表达式
表1-1 基本运算符
[说明]
1)所有运算定义在复数域上.对于方根问题,运算只返回处于第一象限的解.
2)MATLAB用左斜杠或右斜杠分别表示“左除”或“右除”运算.对于标量而言,这两者的作用没有区别;但对矩阵来说,“左除”和“右除”将产生不同的影响.
3)表达式由变量名、运算符和函数名组成.
4. 表达式将按与常规相同的优先级自左至右执行运算.
5. 优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低.
6. 括号可以改变运算的次序.
3、MATLAB变量命名规则
1)变量名、函数名的字母大小表示不同.
2)变量名的第一个字符必须是英文字母,最多可包含31个字符(英文、数字和下划线).
3)变量名中不得包含空格、标点,但可以包含下划线.
4、数值计算结果的显示格式
MATLAB数值计算结果显示格式的类型列于表1-2中.用户在MATLAB指令窗中,直接输入相应的指令,或者在菜单弹出框中进行选择,都可获得所需的数值计算结果显示格式.
表1-2 数据显示格式的控制指令
[说明]
1)format short显示格式是缺身默认的显示格式.
2)该表中实现的所有格式设置仅在MATLAB的当前执行过程中有效.
5、MATLAB指令行中的标点符号
表1-3 MATLAB常用标点的功能
[为确保指令正确执行,以上符号一定要在英文状态下输入.因为MATLAB 不能识别中文标点.
6、在命令窗口中输入或将下面的语句先保存为M 文件再运行 1)x=[0:0.5:360]*pi/180;
plot(x,sin(x),x,cos(x));
观测运行结果并解释原因 2)求方程 023973234=-++x x x 的全部根。

p=[3,7,9,0,-23]; %建立多项式系数向量 x=roots(p) %求根 观测运行结果并解释原因
3)求积分
clear
quad('x.*log(1+x)',0,1) 观测运行结果并解释原因 4)求解线性方程组。

clear
a=[2,-3,1;8,3,2;45,1,-9]; b=[4;2;17]; x=inv(a)*b
观测运行结果并解释原因
5)求一些特殊量的值
clear x=1+2*i; y=3-sqrt(17);
z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))
记录x 、y 、z 的值
6)综合编程
A 、编程求解水仙花数 {
m=100:999;
m1=mod(m,10); %个位
m2=mod(fix(m/10),10); %十位
m3=fix(m/100); %向0方向取整(百位) k=find(m==m1.^3+m2.^3+m3.^3); res=m(k)
}
B 、对函数⎪⎩

⎨⎧>=<-=0,10,00,1x x x y ,由键盘输入x 值,输出函数y 的值
x=input('请输入x 的值:'); if x<0 y=-1; end
if x==0 y=0; end if x>0 y=1; end
C 、编程求1000到10000中的倒数第7个素数
x=1000:10000;
k=isprime(x); k1=find(k); p=k1(end-6)
D 、已知A=⎥⎥⎥⎥⎦
⎤⎢⎢⎢
⎢⎣⎡------------1111111111111111,求A n (n 由键盘输入,选做题) E 、判断1001,1003,1007,1009是不是素数,不是的话输出其约数
function sushupd(x) s=fix(sqrt(x)); p=1; for i=2:s
if mod(x,i)==0 p=0; break end end
if p==1
disp('该数是素数') else g=[]; for i=1:x
if mod(x,i)==0 g=[g i]; end end
disp('该数不是素数') g end
六、实验要求
1.认真预习,并提前做好准备
2.分析各个程序的运行结果,并给出原因
3.在此基础上,认真完成实验报告。

实验二矩阵与数组
一、实验目的
1、掌握矩阵与数组主要的建立方法
2、掌握一些矩阵运算的特殊函数
3、掌握矩阵运算的方法
二、实验内容
1、掌握矩阵(数组)输入方法
2、矩阵(数组)元素的引用方法
3、矩阵(数组)的运算方法
三、实验仪器、设备和材料
1、微型计算机,能正常运行Matlab 6.0或以上版本
2、Matlab6.0或以上版本
四、实验原理
略(参考教材的相关部分)
五、实验步骤
1、矩阵建立方法
1)直接输入法
最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。

具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。

在命令窗口或建立M文件输入
clear
A=[1 2 3;4 5 6;7 8 9]
B=[1 2 3
3 4 5
7 8 9]
A==B
运行后察看结果并解释原因
2)利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。

利用M文件建立MYMAT矩阵。

A) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵(可自己输入一个矩阵)
B) 把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。

C) 在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立
一个名为MYMAT的矩阵,可供以后使用。

3)利用特殊矩阵函数产生特殊矩阵
clear
A=zeros(3)
B=ones(3,2)
C=zeros(size(B))
解释A,B,C矩阵的大小及其元素值
4)x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
解释x,y的结果
2、矩阵或向量元素的引用
1)下标或序号引用法
clear
A=[1,2,3;4,5,6];
A(1,2)
A(3)
记录结果并给出说明。

3、矩阵运算
1)矩阵加减运算
假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。

运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。

如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。

A=[4,-65,-54,0,6;56,0,67,-45,0]
B=find(A>4)
记录B的结果,并说出原因。

2)矩阵乘法
假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A*B为m ×p矩阵。

A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;...
11,18,25,2,19];
D=diag(1:5);
E=D*A
F=A*D
记录E、F结果并解释E、F和A、D之间的关系。

3)矩阵除法
在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。

如果A
矩阵是非奇异方阵,则A\B和B/A运算可以实现。

A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。

建立M文件,输入下面程序
A=[1 2;3 4]
B=[2 3;4 5]
C=A/B
D=A\B
记录C、D结果并说明它们和A、B之间的关系
4、综合运算
A、计算100到1000之间的素数的总和
n=0;
a=0;
for m=100:1000
flag=1;
j=m-1;
i=2;
while i<=j && flag
if rem(m,i)==0
flag=0;
end
i=i+1;
end
if flag
n=n+1;
a=a+m;
prime(n)=m;
end
end
prime
a
B、创建一个10阶的随机矩阵,求其元素的最大值,最小值,以及所有元素总和
A = randn(10,10)
sum=0;
[r,c] = size(A) % 读取行r、列c
for i = 1:r % 建立for循环嵌套
for k = 1:c
sum=sum+A(i,k);
end
end
b=max(max(A))
c=min(min(A))
sum
C、一楼房的后面是一个很大的花园. 在花园中紧靠着楼房有一个温室,温室伸入花园2m,高3m,温室正上方是楼房的窗台. 清洁工打扫窗台周围,
他得用梯子越过温室,一头放在花园中,一头
靠在楼房的墙上. 因为温室是不能承受
a 梯子压力的,所以梯子太短是不行的.
现清洁工只有一架7m长的梯子,
b 你认为它能达到要求吗? 能
满足要求的梯子的最小长度为多少?
D、两个整数a和b,如果a的因子和等于b,b的因子和也等于a,且a不等于b,则称a,b 为一对亲密数。

请找出3000以内的所有亲密数对。

for i = 1:3000
a = 0;
b = 0;
for j = 1:i/2
if mod(i,j)==0
a = a + j;
end
end
for j = 1:a/2
if mod(a,j) == 0
b = b + j;
end
end
if(b == i && b<3000 && b~=0 && a>i)
disp (i);
disp(a);
end
end
六、实验要求
1.认真预习,并提前做好准备
2.分析各个程序的运行结果,并给出原因
3.在此基础上,认真完成实验报告。

实验三基本操作命令
一、实验目的
1、基本操作命令练习
2、熟悉matlab函数的使用方法
3、掌握基本数学函数和高级数学函数的运算方法
二、实验内容
1、系统函数;数学运算符;关系运算符;逻辑运算符;位运算符;集合运算符;
2、基本数学函数;
3、特殊数学函数;
4、矩阵函数。

5、通过练习,掌握20余个常用函数的使用方法。

三、实验仪器、设备和材料
1、微型计算机,能正常运行Matlab 6.0或以上版本
2、Matlab6.0或以上版本
四、实验原理
略(参考教材的相关部分)
五、实验步骤
1、一些常用函数的使用
1)A=fix((90-10+1)*rand(5)+10)
P=rem(A,3)==0
给出P的结果,并给出解释。

2)A=[1 2 3; 1 4 7; 7 8 9];
B(1:6)=A(: , 2 : 3)
b=[1 4 7];
c=b([1 1 1 1], : )
A(2,:)=b,C=b;
C(3:4,:)=A(2:3,:)
记录结果,解释各语句的含义。

3)在命令窗口或建立M文件输入
clear
A=zeros(2,5);
A(:)=-4:5
L=abs(A)>3
4)建立M文件,输入
clear ; a= -4 : 4
A=reshape(a,3,3) B=sort (a )
记录结果,解释各语句的含义。

5)建立M 文件,输入
a=[3:2:11; linspace(20,21,5);ones(1,5)] a(1,1)= a(3,4)= a(: ,2)= a(2, :)= a(1:3,3:5)=
记录结果,并说明原因。

2、综合编程
A 、编程求e x -x-1=0的所有解。

f=inline('exp(x)-x-1'); fzero(f,0)
B 、求01010=-x x 的所有的实数解,并判断10是否一个解?Matlab 能否解出呢? syms x;
eq=10^x-x^10; w=vpa(solve(eq,x)); y=y(~logical(imag(y)))
C 、编程求下面函数的极小点和极小值:
()212
3222132118294,,x x x x x x x x f +-++=
[xmin,ymin]=fminsearch('x(1)^2+4*x(2)^2+9*x(3)^2-2*x(1)+18*x(2)',[0 0 0])
D 、对B 求其所有解(包括虚数解,选做题) syms x;
eq=10^x-x^10; w=vpa(solve(eq,x))
六、实验要求
1.认真预习,并提前做好准备
2.分析各个程序的运行结果,并给出原因 3.在此基础上,认真完成实验报告。

实验四 高级操作命令
一、实验目的
1、掌握高级操作命令 二、实验内容
1、数据分析;
2、多项式和信号处理;
3、实验数据的分析,非线性方程的求根,数值积分。

掌握矩阵(数组)输入方

三、实验仪器、设备和材料
1、微型计算机,能正常运行Matlab 6.0或以上版本
2、Matlab6.0或以上版本 四、实验原理
略(参考教材的相关部分) 五、实验步骤
1.建立M 文件并输入下面程序
clear
x=[-43,72,9,16,23,47]; y=max(x) [z,l]=max(x)
y ,z ,l 的各是什么?并分析。

2. 利用M 文件计算 clear
X=randn(2,3); M=mean(X) D=std(X) R=corrcoef(X)
记录X 、M 、D 、R 的结果并解释。

3.求多项式10834-+x x 与多项式322+-x x 的乘积 clear
P1=[1 8 0 0 -10] P2=[2 -1 3]
P3=conv (P1,P2)
计算P3结果,解释程序求法的原理
4.Jacobi 迭代法(求方程组的解)的MATLAB 函数文件Jacobi.m 如下:
function [y,n] = jacobi(A,b,x0,eps)
if nargin==3 eps=1.0e-6; elseif nargin<3 error return end
D=diag(diag(A)); %求A 的对角矩阵 L=-tril(A,-1); %求A 的下三角阵 U=-triu(A,1); %求A 的上三角阵 B=D\(L+U); f=D\b; y=B*x0+f;
n=1; %迭代次数 while norm(y-x0)>=eps x0=y;
y=B*x0+f; n=n+1; end
在命令中调用函数文件Jacobi.m ,命令如下:
A=[10,-1,0;-1,10,-2;0,-2,10]; b=[9,7,6]';
[x,n]=jacobi(A,b,[0,0,0]',1.0e-6 给出结果并解释 5、综合编程
A 、编程求解[100 200]之间最后一个能被21整除的数以及倒数第3个能被21整除的数
B 、编写程序,计算1到100中既能被3整除又能被7整除的所有数,并计算 这些数的个数与和
C 、编程求解方程组⎩⎨⎧=+=+1
1
22y x y x 的解
D 、线性分组码生成矩阵G=[100010001110
011101
],随机生成300个信息比特,
求编码输出?如果编码后经过BSC ,交叉概率为0.01,应如何编写程序进行译码?(选作) 六、实验要求
1.认真预习,并提前做好准备
2.分析各个程序的运行结果,并给出原因3.在此基础上,认真完成实验报告。

实验五MATLAB的M函数编程
一、实验目的
1、掌握MATLAB运算符的使用;
2、练习建立M文件;
3、学会文件的读取方法。

二、实验内容
1、数据文件输入与计算结果输出练习。

2、脚本M文件和函数M文件;局部变量和全局变量。

3、有关打开及关闭文件的命令;
4、读取ASCII文件;写入ASCII文件;
5、读取二进制文件;写入二进制文件;
6、程序调试概述;一般调试技巧。

三、实验仪器、设备和材料
1、微型计算机,能正常运行Matlab 6.0或以上版本
2、Matlab6.0或以上版本
四、实验原理
略(参考教材的相关部分)
五、实验步骤
本实验为综合性涉及性实验,所以不再给出具体的程序分析,而给出要求,请大家,自己设计编程,完成要求
1、综合编程
A、根据前面所学到的知识,设计程序,利用Matlab的画图函数画出‘心形线’,并且设计你的心形线,顺时针或者逆时针旋转。

t=0:pi/180:4*pi;
x=16*sin(t).^3;
y=13*cos(t)-5*cos(2*t)...
-2*cos(3*t)-cos(4*t);
plot(x,y,'-r');%修改x比如说x+3
xlabel('x');
ylabel('y');
axis([-20,20,-20,15]);
title(' Hearts')
legend('U''I')
B、画出y=10x−x10的在(-15,11)区间的图x=-15:0.1:11;
y=10.^x-x.^10;
plot(x,y)
C、计算:
∑=-
=
100
1
2
)1 2(
n n
L
x=0;
for n=1:100
a=(2*n-1)^2;
x=x+a;
end
x
D、画出三个同心圆(选作,要求至少三种方法)
六、实验要求
1.认真预习,并提前做好准备
2.分析各个程序的运行结果,并给出原因
3.在此基础上,认真完成实验报告。

实验六 MATLAB 绘图
一、实验目的
1、掌握MATLAB 绘图的使用;
二、实验内容
1、掌握MATLAB 绘图的使用;
2、掌握熟练应用各绘图命令。

三、实验仪器、设备和材料
1、微型计算机,能正常运行Matlab 6.0或以上版本
2、Matlab6.0或以上版本
四、实验原理
略(参考教材的相关部分)
五、实验步骤
本实验为综合性涉及性实验,所以不再给出具体的程序分析,而给出要求,请大家,自己设计编程,完成要求
1、综合编程
A 、一个数恰好等于它的因子之和,这个数就称为完数。

例如6=1+2+3,编程求1到2000内的完数。

for i=1:2000
a=0;
for j=1:i/2
if mod(i,j)==0
a=a+j;
end
end
if i==a
disp(i);
end
end
B 、多元函数)(2222)(),(y x
e y x y x
f +-+=,并用它来计算f (-2,3)、f (3,4)、
f (0,0),并画出函数图形
function m=f(x,y)
m=(x^2+y^2)*exp(-x^2-y^2)
x=-4:0.05:4;
y=x;
[x,y]=meshgrid(x,y);
z=(x^2+y^2)*exp(-x^2-y^2)
mesh(x,y,z)
C、作x=sint, y=cost生长过程的动画。

x=0:0.01:2*pi;
y = sin(x);
h = animatedline;
axis([min(x) max(x) min(y) max(y)])
grid on;
for i = 1:numel(x)
addpoints(h,x(i),y(i))
drawnow
end
D、画出两个同心圆球(选作)
E、两个人进行博弈游戏,假如A有MA=1000万元,B有MB=10万元,赌大小,胜负概率均等,最后的结果是怎么样的?请仿真给出结果(挑战题)
F、两个人进行博弈游戏,假如A有MA=1000万元,B有MB=10万元,赌大小,胜负概率不均等,A赢的概率0.4999,B嬴的概率0.5001,最后的结果是怎么样的?请仿真给出结果(挑战题)
六、实验要求
1.认真预习,并提前做好准备
2.分析各个程序的运行结果,并给出原因
3.在此基础上,认真完成实验报告。

相关文档
最新文档