MATLAB上机实验实验报告材料.docx
《MATLAB上机实验实验报告材料.docx》由会员分享,可在线阅读,更多相关《MATLAB上机实验实验报告材料.docx(91页珍藏版)》请在冰豆网上搜索。
![MATLAB上机实验实验报告材料.docx](https://file1.bdocx.com/fileroot1/2023-2/1/67c6bd40-9a66-409c-9adb-89654183c86c/67c6bd40-9a66-409c-9adb-89654183c86c1.gif)
MATLAB上机实验实验报告材料
MATLAB上机实验一
一、实验目的
初步熟悉MATLAB工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。
命令窗口
二、实验内容
(1)熟悉MATLAB平台的工作环境。
(2)熟悉MATLAB的5个工作窗口。
(3)MATLAB的优先搜索顺序。
三、实验步骤
1.熟悉MATLAB的5个基本窗口
①CommandWindow(命令窗口)
②Workspace(工作空间窗口)
③CommandHistory(命令历史记录窗口)
④CurrentDirectory(当前目录窗口)
⑤HelpWindow(帮助窗口)
(1)命令窗口(CommandWindow)。
在命令窗口中依次输入以下命令:
>>x=1
>>y=[123
456
789];
>>z1=[1:
10],z2=[1:
2:
5];
>>w=linspace(1,10,10);
>>t1=ones(3),t2=ones(1,3),t3=ones(3,1)
>>t4=ones(3),t4=eye(4)
x=1
z1=
12345678910
t1=
111
111
11
t2=
111
t3=
1
1
1
t4=
111
111
111
t4=
1000
0100
0010
0001
思考题:
①变量如何声明,变量名须遵守什么规则、是否区分大小写。
答:
(1)变量声明
1.局部变量
每个函数都有自己的局部变量,这些变量只能在定义它的函数内部使用。
当函数运行时,局部变量保存在函数的工作空间中,一旦函数退出,这些局部变量将不复存在。
脚本(没有输入输出参数,由一系列MATLAB命令组成的M文件)没有单独的工作空间,只能共享调用者的工作空间。
当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中。
2.全局变量
在函数或基本工作空间内,用global声明的变量为全局变量。
例如声明a为全局变量:
>>globala
声明了全局变量的函数或基本工作空间,共享该全局变量,都可以给它曲赋值。
如果函数的子函数也要使用全局变量,也必须用global声明。
3.永久变量
永久变量用persistent声明,只能在M文件函数中定义和使用,只允许声明它的函数存取。
当声明它的函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量:
>>persistenta
(2)变量命名规则如下:
始于字母,由字母、数字或下划线组成;
区分大小写;
可任意长,但使用前N个字符。
N与硬件有关,由函数namelengthmax返回,一般N=63;
不能使用关键字作为变量名(关键字在后面给出);
避免使用函数名作为变量名。
如果变量采用函数名,该函数失效。
(3)区分大小写
②试说明分号、逗号、冒号的用法。
答:
分号:
加上分号“;”其作用是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存的同时,还将运算结果显示出来。
逗号:
分割列表
冒号:
从什么到什么,比如1:
10意思是——1到10
③linspace()称为“线性等分”函数,说明它的用法。
可使用help命令,格式如下:
>>helplinspace
④说明函数ones()、zeros()、eye()的用法。
答;
(1)ones()函数:
全部元素都为1的常数矩阵;
(2)zeros()函数:
全部元素都为0的矩阵;(3)eye()函数:
单位矩阵;(4)linspace()函数:
如a=linspace(n1,n2,n3),表示在线性空间上,行矢量的值从n1到n2
(2)工作空间窗口(Workspace)。
单击工作空间窗口右上角的按钮,将其从MATLAB主界面分离出来。
①在工作空间查看各个变量,或在命令窗口用who,whos(注意大小写)查看各个
变量。
②在工作空间双击变量,弹出ArrayEditor窗口(数组编辑器窗口),即可修改变量。
③使用save命令把工作空间的全部变量保存为my_var.mat文件。
>>savemy_var.mat
④输入下列命令:
>>clearall%清除工作空间的所有变量
观察工作空间的变量是否被清空。
使用load命令把刚才保存的变量载入工作空间。
>>loadmy_var.mat
⑤清除命令窗口命令:
>>clc
(3)历史命令窗口(CommandHistory)。
打开历史命令窗口,可以看到每次运行MATLAB的时间和曾在命令窗口输入过的命
令,练习以下几种利用历史命令窗口重复执行输入过的命令的方法。
①在历史命令窗口中选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择
Copy,然后再Paste到命令窗口。
②在历史命令窗口中双击要执行的一行命令,或者选中要重复执行的一行或几行命令
后,用鼠标将其拖动到命令窗口中执行。
③在历史命令窗口中选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择
EvaluateSelection,也可以执行。
④或者在命令窗口使用方向键的上下键得到以前输入的命令。
例如,按方向键“↑”
一次,就重新将用户最后一次输入的命令调到MATLAB提示符下。
重复地按方向上键
“↑”,就会在每次按下的时候调用再往前一次输入的命令。
类似地,按方向键“↓”的时
候,就往后调用一次输入的命令。
按方向键“←”或者方向键“→”就会在提示符的命令
中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本的方法编辑这些命令。
(4)当前目录命令窗口(CurrentDirectory)。
MATLAB的当前目录即是系统默认的实施打开、装载、编辑和保存文件等操作时的文
件夹。
打开当前目录窗口后,可以看到用“save”命令所保存的my_var.mat文件是保存在
目录C:
\MATLAB6p5\work下。
(5)帮助窗口(HelpWindow)。
单击工具栏的图标,或选择菜单View|Help,或选择菜单Help|MATLABHelp都能
启动帮助窗口。
①通过Index选项卡查找log2()函数的用法,在Searchindexfor栏中输入需要查找的
词汇“log2”,在左下侧就列出与之最匹配的词汇条目,选择“log2[1]”,右侧的窗口就
会显示相应的内容。
②也可以通过Search选项卡查找log2()函数的用法。
Search选项卡与Index选项卡
不同,Index只在专用术语表中查找,而Search搜索的是整个HTML帮助文件。
2.MATLAB的数值显示格式设置
屏幕显示方式有紧凑(Compact)和松散(Loose)两种,其中Loose为默认方式。
>>a=ones(1,30)
>>formatcompact
>>a
数字显示格式有short、long、shorte、longe等,请参照教材的列表练习一遍。
>>formatlong
>>pi
>>formatshort
>>pi
>>formatlong
>>pi
>>format+
>>pi
>>-pi
3.变量的搜索顺序
在命令窗口中输入以下指令:
>>pi
>>sin(pi);
>>exist('pi')
>>pi=0;
>>exist('pi')
>>pi
>>clearpi
>>exist('pi')
>>pi
思考题:
①3次执行exist('pi')的结果一样吗?
如果不一样,试解释为什么?
答:
不一样,pi原来是库存函数,但是如果被赋值则系统默认被赋予的值为pi后来的值,但是当执行clearpi之后所赋的值被清空,因此pi的值又成为3.1416
②圆周率pi是系统的默认常量,为什么会被改变为0?
答:
pi原来是库存函数,但是如果被赋值则系统默认被赋予的值为pi后来的值,但是当执行clearpi之后所赋的值被清空,因此pi的值又成为3.1416
实验二MATLAB语言基础
1、实验目的
基本掌握MATLAB向量、矩阵、数组的生成及其基本运算(区分数组运算和矩阵运算)、常用的数学函数。
交接字符串的操作。
2、实验内容
(1)向量的生成和运算。
(2)矩阵的创建、引用和运算。
(3)多维数组的创建及运算。
(4)字符串的操作。
三、实验步骤
1.向量的生成和运算
1)向量的生成
直接输入法:
A=
23456
>>B=[1;2;3;4;5]
B=
1
2
3
4
5
冒号生成发:
>>A=1:
2:
10,B=1:
10,C=10:
-1:
1
A=
13579
B=
12345678910
C=
10987654321
函数法:
Linspace()是线性等分函数,logspace()是对数等分函数。
>>A=linspace(1,10),B=linspace(1,30,10)
A=
Columns1through9
1.00001.09091.18181.27271.36361.45451.54551.63641.7273
Columns10through18
1.81821.90912.00002.09092.18182.27272.36362.45452.5455
Columns19through27
2.63642.72732.81822.90913.00003.09093.18183.27273.3636
Columns28through36
3.45453.54553.63643.72733.81823.90914.00004.09094.1818
Columns37through45
4.27274.36364.45454.54554.63644.72734.81824.90915.0000
Columns46through54
5.09095.18185.27275.36365.45455.54555.63645.72735.8182
Columns55through63
5.90916.00006.09096.18186.27276.36366.45456.54556.6364
Columns64through72
6.72736.81826.90917.00007.09097.18187.27277.36367.4545
Columns73through81
7.54557.63647.72737.81827.90918.00008.09098.18188.2727
Columns82through90
8.36368.45458.54558.63648.72738.81828.90919.00009.0909
Columns91through99
9.18189.27279.36369.45459.54559.63649.72739.81829.9091
Column100
10.0000
B=
Columns1through9
1.00004.22227.444410.666713.888917.111120.333323.555626.7778
Column10
30.0000
>>A=logspace(0,4,5)
A=
110100100010000
练习:
使用logspace()创建1-4
的有10个元素的行向量。
答案:
>>A=logspace(1,10,4*pi)
A=
1.0e+010*
Columns1through9
0.00000.00000.00000.00000.00000.00000.00010.00050.0035
Columns10through12
0.02310.15201.0000
2)向量的运算
维数相同的行向量只见可以相加减,维数相同的列向量也可以相加减,标量可以与向量直接相乘除。
>>A=[12345],B=3:
7,
A=
12345
B=
34567
>>AT=A',BT=B',
AT=
1
2
3
4
5
BT=
3
4
5
6
7
>>E1=A+B,E2=A-B
E1=
4681012
E2=
-2-2-2-2-2
>>F=AT-BT,
F=
-2
-2
-2
-2
-2
>>G1=3*A,G2=B/3,
G1=
3691215
G2=
1.00001.33331.66672.00002.3333
向量的点积与叉积运算。
>>A=ones(1,10);B=(1:
10);BT=B';
>>E1=dot(A,B)
E1=
55
>>E2=A*BT
E2=
55
>>clear
>>A=1:
3,B=3:
5,
A=
123
B=
345
>>E=cross(A,B)
E=
-24-2
2.矩阵的创建、引用和运算
1)矩阵的创建和引用
矩阵是由
元素构成的矩阵结构,行向量和列向量是矩阵的特殊形式。
直接输入法:
>>A=[123;456]
A=
123
456
>>B=[147
258
369]
B=
147
258
369
>>A
(1)
ans=
1
>>A(4:
end)
ans=
536
>>B(:
1)
ans=
1
2
3
>>B(:
)
ans=
1
2
3
4
5
6
7
8
9
>>B(5)
ans=
5
抽取法
>>clear
>>A=[1234;5678;9101112;13141516]
A=
1234
5678
9101112
13141516
>>B=A(1:
3,2:
3)
B=
23
67
1011
>>C=A([13],[24])
C=
24
1012
>>A([13;24])
ans=
19
513
函数法:
>>A=ones(3,4)
A=
1111
1111
1111
>>B=zero(3)
?
?
?
Undefinedfunctionormethod'zero'forinputargumentsoftype'double'.
>>B=zeros(3)
B=
000
000
000
>>C=eyes(3,2)
?
?
?
Undefinedfunctionormethod'eyes'forinputargumentsoftype'double'.
>>C=eye(3,2)
C=
10
01
00
>>D=magic(3)
D=
816
357
492
拼接法
>>clear
>>A=ones(3,4)
A=
1111
1111
1111
>>B=zeros(3)
B=
000
000
000
>>C=eye(4)
C=
1000
0100
0010
0001
>>D=[AB]
D=
1111000
1111000
1111000
>>F=[A;C]
F=
1111
1111
1111
1000
0100
0010
0001
拼接函数和变形函数法:
>>clear
>>A=[01;11]
A=
01
11
>>B=2*ones
(2)
B=
22
22
>>cat(1,A,B,A)
ans=
01
11
22
22
01
11
>>cat(2A,B,A)
?
?
?
cat(2A,B,A)
Error:
UnexpectedMATLABexpression.
>>cat(2,A,B,A)
ans=
012201
112211
>>repmat(A,2,2)
ans=
0101
1111
0101
1111
>>repmat(A,2)
ans=
0101
1111
0101
1111
练习:
使用函数法、拼接法、拼接函数法和变形函数法,按照要求创建以下矩阵:
A为
的全1矩阵、B为
的0矩阵/C为
的单位矩阵、D为
的魔方阵、E由C和D纵向拼接而成,F抽取E的2---5行元素生成、G由F经变形为
的矩阵而得、以G为子矩阵用复制函数(repmat)生成
的大矩阵H。
答案:
>>A=ones(3,4)
A=
1111
1111
1111
>>B=zeros(3,3)
B=
000
000
000
>>C=eye(3)
C=
100
010
001
>>D=magic(3)
D=
816
357
492
>>E=[C;D]
E=
100
010
001
816
357
492
>>F=(2:
5,:
)
?
?
?
F=(2:
5,:
)
Error:
Expressionorstatementisincorrect--possiblyunbalanced(,{,or[.
>>F=E(2:
5,:
)
F=
010
001
816
357
>>G=respace(E,3,4)
?
?
?
Undefinedcommand/function'respace'.
>>G=respace(F,3,4)
?
?
?
Undefinedcommand/function'respace'.
>>G=reshape(F,3,4)
G=
0311
0156
8007
>>H=repmat(G,2,2)
H=
03110311
01560156
80078007
03110311
01560156
80078007
2)矩阵的运算
矩阵的加减、数乘与乘法
已知矩阵:
>>A=[12
3-1],
A=
12
3-1
>>B=[-10
12]
B=
-10
12
>>A+B
ans=
02
41
>>2*A
ans=
24
6-2
>>2*A-3*B
ans=
54
3-8
>>A*B
ans=
14
-4-2
矩阵的逆矩阵
>>formatrat;A=[101;212;046]
A=
101
212
046
>>A1=inv(A)
A1=
-1/32/3-1/6
-210
4/3-2/31/6
>>A*A1
ans=
100
010
001
矩阵的除法
>>a=[121;314;221],b=[112],d=b'
a=
121
314
221
b=
112
d=
1
1
2
>>c1=b*inv(a),c2=b/a
c1=
6/73/7-4/7
c2=
6/73/7-4/7
>>c3=inv(a)*d,c4=a\b
c3=
1
2/7
-4/7
?
?
?
Errorusing==>mldivide
Matrixdimensionsmustagree.
>>c3=inv(a)*d,c4=a\d
c3=
1
2/7
-4/7
c4=
1
2/7
-4/7
练习:
按下列要求求出各种的矩阵运算的值
求矩阵的秩、特征值和特征向量、
矩阵的乘幂与开方;
矩阵的指数与对数
矩阵的提取与翻转
答案:
>>A=[6343
-257-4
8-1-3-7]
A=
6343
-257-4
8-1-3-7
>>B=rank(A)
B=
3
>>rb=rank(A)
rb=
3
>>[X,Lamda]=eig(A)
?
?
?
Errorusing==>eig
Matrixmustbesquare.
>>[X,Lamda]=eigs(A)
?
?
?
Errorusing==>eigs
AmustbeasquarematrixorafunctionwhichcomputesA*x.
>>C=[634
-257
8-1-3]
C=
634
-257
8-1-3
>>[X,Lamda]=eigs(C)
X=
0.8013-0.1094-0.1606
0.3638-0.65640.8669
0.47490.7464-0.4719
Lamda=
9.732600
0