MATLAB运算基础第2章答案.docx
《MATLAB运算基础第2章答案.docx》由会员分享,可在线阅读,更多相关《MATLAB运算基础第2章答案.docx(57页珍藏版)》请在冰豆网上搜索。
MATLAB运算基础第2章答案
实验01讲评、参考答案
讲评
未交实验报告的同学名单
数学:
6人(11、12级)
信科:
12-04,12-22,13-47
批改情况:
问题1:
不仔细,式子中出错。
问题2:
提交的过程不完整。
问题3:
使用语句尾分号(;)不当,提交的过程中不该显示的结果显示。
问题4:
截屏窗口没有调整大小。
附参考答案:
实验01MATLAB运算基础
(第2章MATLAB数据及其运算)
一、实验目的
1.熟悉启动和退出MATLAB的方法。
2.熟悉MATLAB命令窗口的组成。
3.掌握建立矩阵的方法。
4.掌握MATLAB各种表达式的书写规则以及常用函数的使用。
二、实验内容
1.数学表达式计算
先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
1.1计算三角函数
(注意:
度要转换成弧度,e2如何给出)
示例:
点击CommandWindow窗口右上角的
,将命令窗口提出来成悬浮窗口,适当调整窗口大小。
命令窗口中的执行过程:
1.2计算自然对数
,其中
(提示:
clc命令擦除命令窗口,clear则清除工作空间中的所有变量,使用时注意区别,慎用clear命令。
应用点乘方)
命令窗口中的执行过程:
1.3求数学表达式的一组值
提示:
利用冒号表达式生成a向量,求各点的函数值时用点乘运算。
命令窗口中的执行过程:
1.4求分段函数的一组值
,其中t
提示:
用逻辑表达式求分段函数值。
命令窗口中的执行过程:
1.5对工作空间的操作
接着显示MATLAB当前工作空间的使用情况并保存全部变量
提示:
用到命令who,whos,save,clear,load,请参考教材相关内容。
命令窗口中的执行过程:
>>who%显示当前工作空间中的变量名
Yourvariablesare:
atxz1z2z3z4
>>whos%显示当前工作空间中的变量名及信息
NameSizeBytesClassAttributes
a1x61488double
t1x648double
x2x264doublecomplex
z11x18double
z22x264doublecomplex
z31x61976doublecomplex
z41x648double
>>savevarfile%生成文件varfile.mat,并将当前工作空间的变量存入其中
>>clearall%清除当前工作空间中的全部变量
>>who
>>whos
>>loadvarfile
>>who
Yourvariablesare:
atxz1z2z3z4
>>whos
NameSizeBytesClassAttributes
a1x61488double
t1x648double
x2x264doublecomplex
z11x18double
z22x264doublecomplex
z31x61976doublecomplex
z41x648double
>>
2.矩阵运算与数组运算
已知:
2.1矩阵加、减和数乘运算
A+6*B和A-B+I(其中I为单位矩阵。
注意:
如何得到单位矩阵)
命令窗口中的执行过程:
2.2矩阵乘积和点乘积
A*B和A.*B
命令窗口中的执行过程:
2.3矩阵的乘方和点乘方
A^3和A.^3
命令窗口中的执行过程:
2.4矩阵的右除和左除
A/B及B\A
命令窗口中的执行过程:
2.5拼接矩阵成大的矩阵
[A,B]和[A([1,3],:
);B^2]
命令窗口中的执行过程:
3.矩阵乘积、矩阵的子矩阵
设有矩阵A和B
3.1求矩阵A和B的乘积
求它们的乘积并赋给C。
(提示:
可简化A的输入,用冒号表达式、reshape、矩阵转置)
命令窗口中的执行过程:
3.2求矩阵C的子矩阵
将矩阵C的右下角3×2子矩阵赋给D。
命令窗口中的执行过程:
3.3查看MATLAB工作空间的使用情况
命令窗口中的执行过程:
4.完成下列数据操作
4.1求[100,999]之间能被21整除的数的个数
提示:
先利用冒号表达式,再利用find和length函数。
命令窗口中的执行过程:
4.2建立一个字符串向量,删除其中的大写字母
提示:
利用find函数和空矩阵。
命令窗口中的执行过程:
三、实验提示
1.1计算三角函数提示
(注意:
度要转换成弧度,e2如何给出)
提示1:
示例:
点击CommandWindow窗口右上角的
,将命令窗口提出来成悬浮窗口,适当调整窗口大小。
命令窗口中的执行过程:
提示2:
e2的表示请查表“2.3常用数学函数及其含义”。
用exp
(2)。
1.2计算自然对数提示
,其中
提示1:
clc命令擦除命令窗口,clear则清除工作空间中的所有变量,使用时注意区别,慎用clear命令。
提示2:
ln和开方的表示请查“表2.3常用数学函数及其含义”。
用log,sqrt。
提示3:
x2是数组运算。
用x.^2或x.*x。
提示4:
i为复数的虚数单位(j也是)。
若将i作变量则其虚数单位无效,恢复用cleari。
慎用i,j做变量。
1.4求分段函数的一组值提示
,其中t
提示:
用逻辑表达式求分段函数值。
提示1:
参考例2.4。
提示2:
对于第1个分段条件表达式0≤t<1,有以下结果:
对于第2、3个分段条件表达式,有类似的结果。
于是,可以得到:
分段函数值=第1个表达式*第1个分段条件表达式+第2个表达式*第2个分段条件表达式+第3个表达式*第3个分段条件表达式+…
注意:
分段区间是不重叠的。
对于在定义区间中任给的变量值,它只满足一个分段条件表达式(值为1),其它不满足(值为0),满足的对应项的值是其表达式的值,不满足的对应项值为0。
代入本题得:
z4=t^2*(t>=0&&t<1)+(t^2-1)*(t>=1&&t<2)+(t^2+2*t+1)*(t>=2&&t<3)
继续做下去可以完成本题。
若变量取100个值,求对应的函数值,还按这种方法来求做就有问题啦。
MATLAB提供了一种简单的方法:
t不是一个个取值,而是把所有值放到t中成一个行向量,表达式自动逐个将t中的值代入表达式计算,得到对应的一组函数值。
实现这种功能需要将上面的表达式中的乘方号(^)和乘号(*)前加点(.),即改成(.^)和(.*),相当于循环,它不同于线性代数中相应的矩阵乘方(^)和乘法(*)运算。
用冒号表达式更简单:
以下是分解式:
至此,能理解表达式的计算结果了吗?
1.5对工作空间的操作提示
接着显示MATLAB当前工作空间的使用情况并保存全部变量
提示1:
用到命令who,whos,save,clear,load,请参考教材相关内容。
步骤:
查看工作空间;保存工作空间;清除工作空间;再查看工作空间;装入工作空间;再查看工作空间。
2.1矩阵加、减和数乘运算提示
A+6*B和A-B+I(其中I为单位矩阵。
注意:
如何得到单位矩阵)
提示1:
3阶单位矩阵用eye(3)或eye(3,3)。
4.完成下列数据操作
4.1求[100,999]之间能被21整除的数的个数提示
提示:
先利用冒号表达式,再利用find和length函数。
提示1:
步骤:
用冒号表达式把[100,999]之间的整数放在一个向量里(如A);
用mod求得一个向量(如B),使A中能被21整除的数在B中对应位置为1,B的其它位置为0;
用find求得B中不为0的元素的序号,放入一个向量中(如K);
显示A中对应K的元素;%即能被21整除的数
用length显示K的元素个数。
%即能被21整除的数的个数
4.2建立一个字符串向量,删除其中的大写字母提示
提示:
利用find函数和空矩阵。
提示1:
利用find函数和空矩阵。
注意使用关系运算、逻辑运算。
注意!
本题中大写字母所在位置是随机的,要用关系运算和逻辑运算,以及find找到它们所在位置的序号。
提示2:
四、教程:
第2章MATLAB数据及其运算
2.1MATLAB数据的特点p17
矩阵
是MATLAB最基本、最重要的数据对象。
MATLAB的大部分运算或命令都是在矩阵(复数域上)运算的意义下执行的。
标量对应仅含一个元素的矩阵。
数值数据
双精度数占64位,转换函数double
单精度数占32位,转换函数single
带符号整数转换函数int8,int16,int32
无符号整数转换函数uint8,uint16,uint32
字符数据转换函数char
结构体类型(Structure)
单元类型(Cell)
逻辑型非0为true,0为false
2.2变量及其操作
变量与赋值
1.变量命名
Ø以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。
Ø区分字母的大小写。
MATLAB提供的标准函数名以及命令名必须用小写字母。
2.赋值语句
(1)变量=表达式
(2)表达式(值赋给预定义变量ans)
其中,表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。
例2.1计算表达式的值p18
将
的计算结果赋给变量x,然后显示出结果。
>>x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i)
x=
其中,pi和i都是MATLAB预先定义的变量,分别代表圆周率π和虚数单位。
3.预定义变量p18
表2.1常用的预定义变量及其含义
预定义变量
含义
ans
eps
pi
i,j
inf,Inf
NaN,nan
nargin
nargout
realmax
realmin
lasterr
lastwar
默认赋值变量
机器零阈值
π近似值
虚数单位
无穷大,如1/0的结果
非数,如0/0,inf/inf的结果
函数输入参数个数
函数输出参数个数
最大正实数
最小正实数
存放最新的错误信息
存放最新的警告信息
预定义变量有特定的含义,应尽量避免重新赋值。
i=2%对预定义变量重新赋值
2*i
cleari%恢复预定义变量
2*i
i=
2
ans=
4
ans=
2.2.2变量的管理p19
1.内存变量的显示与删除
显示工作空间中驻留的变量名清单及信息命令:
who%显示变量名清单
whos%显示变量名清单及信息
删除工作空间中的变量命令:
clear变量名
工作空间窗口专门用于内存变量的管理。
在该窗口中显示所有内存变量的属性。
●当选中某些变量后,再单击Delete按钮,将删除这些变量。
●双击变量后,将进入变量编辑器。
可以观察变量中的具体元素,也可修改具体元素。
●输入较大矩阵时,可采用变量编辑器。
2.内存变量文件
用MAT文件可把当前工作空间中的一些有用变量长久地保留下来,扩展名是.mat。
MAT文件的生成和装入,常用格式为:
save文件名[变量名表][-append][-ascii]
load文件名[变量名表][-ascii]
●文件名可带路径,不需带扩展名.mat,默认对.mat文件进行操作。
●变量名表变量名以空格分隔。
省略时,保存或装入全部变量。
●-ascii选项使文件以ASCII格式处理,省略时以二进制格式处理。
●-append选项使变量追加到MAT文件中。
2.2.3数据的输出格式p20
用十进制数表示一个常数,可采用日常记数法和科学记数法。
一般情况下,内部每一个数据元素都用双精度数表示和存储。
设置或改变数据输出格式
format命令的格式为:
format格式符
格式符决定数据的输出格式
表2.2控制数据输出格式格式符及含义
格式符
含义
short
(默认)
小数点后4位,不超过7位有效数字。
大于1000的实数用5位有效数字的科学记数法
long
15位有效数字
shorte
5位有效数字科学记数法
longe
15位有效数字科学记数法
shortg
从short和shorte选择最佳方式
longg
从long和longe选择最佳方式
rat
近似有理数表示
hex
十六进制表示
+
正数、负数、零分别用+、-、空格表示
bank
银行格式,元、角、分表示
compact
输出变量之间无空行
loose
输出变量之间有空行
可用Helpformat查询
例输出格式format
>>4/3%当前输出格式
ans=
>>formatlong%15位有效数字形式输出
>>4/3
ans=
>>formatrat%近似有理数表示
>>4/3
ans=
4/3
>>formatcompact%输出变量之间没有空行
>>4/3
ans=
4/3
>>formatloose%输出变量之间有空行
>>4/3
ans=
4/3
>>formatshort%short为默认输出格式
2.3矩阵的表示p21
表矩阵操作函数及其含义
函数名
含义
eye
ones
linspace
sub2ind
ind2sub
size
length
reshape
end
[]
单位矩阵
全1矩阵
生成行向量
下标转换成序号
序号转换成下标
给出矩阵的行数和列数
给出矩阵行数和列数中较大者
矩阵重排
预定义变量,某一维末尾下标
空矩阵
2.3.1矩阵的建立
1.直接输入法
从键盘直接输入矩阵的元素。
方法如下:
Ø将矩阵的元素用方括号括起来,输入元素;
Ø同一行的元素间用空格或逗号分隔;
Ø不同行的元素间用分号(或回车)分隔。
例
>>A=[1,2,3;456;7,89]
A=
123
456
789
2.利用M文件建立矩阵
对于比较大且复杂的矩阵,可专门建立一个M文件。
例2.2利用M文件建立矩阵
(1)启动文本编辑器,输入:
MYMAT=[101,102,103,104,105;
201,202,203,204,205;
301,302,303,304,305]
(2)存盘(文件名为mymatrix.m)。
(3)在命令窗口中输入mymatrix,即运行该M文件,就建立一个名为MYMAT的矩阵。
3.建立大矩阵(矩阵拼接)
大矩阵可由方括号中的小矩阵或向量建立。
>>A=[1,2;3,4]
A=
12
34
>>eye
(2)
ans=
10
01
>>ones
(2)
ans=
11
11
>>C=[A,eye
(2),ones
(2),A]
C=
12101112
34011134
2.3.2冒号表达式
用冒号表达式产生行向量,一般格式:
e1:
e2:
e3
其中e1为初始值,e2为步长,e3为终止值上限。
用linspace函数产生行向量。
调用格式:
linspace(a,b,n)
其中a和b是第一个和最后一个元素,n是元素总数。
2.3.3矩阵的拆分
1.矩阵元素
通过下标引用矩阵的元素,例
>>A=[1,2,3;4,5,6]
A=
123
456
>>A(2,3)
ans=
6
>>A(2,2)=22;
>>A
A=
123
4226
>>A(4,5)=10;
>>A
A=
12300
422600
00000
000010
采用矩阵元素的序号来引用矩阵元素。
元素的序号是相应元素在内存中的排列顺序。
在MATLAB中,矩阵按列存储,先第一列,再第二列,依次类推。
>>A=[1,2,3;4,5,6]
A=
123
456
>>A(3)
ans=
2
>>A(5)
ans=
3
>>A(8)
?
?
?
AttemptedtoaccessA(8);indexoutofboundsbecausenumel(A)=6.
numel(A)返回A中元素个数。
序号(Index)与下标(Subscript)一一对应。
以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。
互转换关系用sub2ind和ind2sub函数求得。
>>A=ones(3,4)
A=
1111
1111
1111
>>size(A)%给出矩阵的行数和列数
ans=
34
>>sub2ind(size(A),1,2)%下标(1,2)转换为序号
ans=
4
>>[i,j]=ind2sub(size(A),3)%序号转换为下标
i=
3
j=
1
>>length(A)%给出矩阵行数和列数中较大者
ans=
4
reshape(A,m,n)在矩阵总元素保持不变的前提下,将矩阵重新排成m×n矩阵。
>>x=1:
1:
12;
>>y=reshape(x,3,4)
y=
14710
25811
36912
>>z=reshape(y,2,7)
?
?
?
Errorusing==>reshape
ToRESHAPEthenumberofelementsmustnotchange.
2.矩阵拆分
(1)利用冒号表达式获得子矩阵
已知A为矩阵
A(:
j)第j列全部元素;
A(i,:
)第i行的全部元素;
A(i,j)第i行、第j列的元素;
A(i:
i+m,:
)第i~i+m行的全部元素;
A(:
k:
k+m)第k~k+m列的全部元素;
A(i:
i+m,k:
k+m)第i~i+m行内,并在第k~k+m列中的所有元素;
A(:
)将每一列元素堆叠起来,成为一个列向量。
end表示某一维的末尾元素下标。
A(end,:
)最后一行
A(:
end)最后一列
(2)利用空矩阵删除矩阵的元素
给变量X赋空矩阵的语句:
X=[]
注意,X=[]与clearX不同:
clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。
2.4MATLAB数据的运算p26
2.4.1算术运算
1.基本算术运算
MATLAB的基本算术运算有:
+加
-减
*乘
/右除
\左除
^乘方
注意,运算是在矩阵意义下进行的。
(1)矩阵加减运算
假定矩阵A和B,则A+B和A-B实现矩阵的加减运算。
运算规则是:
●若A和B的维数相同,则可以执行矩阵的加减运算,A和B的相应元素相加减。
●若A与B的维数不相同,将给出错误信息。
注意,A、B均不是标量。
(2)矩阵乘法
若A为m×n矩阵,B为n×p矩阵,则
C=A*B
为m×p矩阵。
(3)矩阵除法
有两种矩阵除法运算:
\左除
/右除
若A矩阵是非奇异方阵,则A\B和B/A运算可以实现。
A\B等效于inv(A)*B
B/A等效于B*inv(A)
对于含有标量的运算,两种除法运算的结果相同。
如3/4和4\3有相同的值,都等于。
又如设a=[10.5,25],则
a/5=5\a=[2.10005.0000]
对于矩阵运算,一般A\B≠B/A。
(4)矩阵的乘方
一个矩阵的乘方运算可表示成
A^x
要求A为方阵,x为标量。
2.点运算
有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。
点运算符有
.*点乘
./点右除
.\点左除
.^点乘方
两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。
3.MATLAB常用数学函数p29
●函数的自变量规定为矩阵变量。
●运算法则是将函数逐项作用于矩阵的元素上。
●结果是一个与自变量同维数的矩阵。
表2.3常用数学函数及其含义p29
函数名
含义
三角函数
sqrt
log
log10
log2
exp
pow2
abs
angle
real
imag
conj
rem
mod
fix
floor
ceil
round
sign
gcd
lcm
略
平方根函数
自然对数函数
常用对数函数
以2为底的对数函数
自然指数函数
2的幂
绝对值函数
复数的幅角
复数的实部
复数的虚部
复数共轭运算
求余数或模运算
模运算
向零方向取整
不大于自变量的最大整数
不小于自变量的最小整数
四舍五入到最邻近的整数
符号函数
最大公因子
最小公倍数
函数使用说明:
(1)三角函数以弧度为单位计算。
(2)abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。
>>abs(-10)
ans=
10
>>abs(3+4i)
ans=
5
>>abs('abc')
ans=
979899
(3)用于取整的函数有
fix向0方向取整
floor向-∞方向取整
ceil向+∞方向取整
round四舍五入到最邻近的整数
(4)rem(x,y)和mod(x,y)要求x,y必须为相同大小的实矩阵或为标量。
rem求余数或模运算
mod模运算
●当y≠0时
rem(x,y)=x-y.*fix(x./y)
mod(x,y)=x-y.*floor(x./y)
●当y=0时
rem(x,0)=NaN(非数)
mod(x,0)=x
2.4.2关系运算p30
6种关系运算符:
<小于
<=小于或等于
>大于
>=大于或等于
==等于
~=不等于
运算法则:
(1)两个标量的比较
若关系成立,结果为1,否则为0。
(2)两个同维数矩阵的比较
对相同位置的元素比较。
(3)标量与矩阵的比较
标量与矩阵的每一个元素比较。
例2.3建立5阶方阵,判断A的元素是否能被3整除。
A=[24,35,13,22,63;23,39,47,80,80;...
90,41,80,29,10;45,57,85,62,21;...
37,19,31,8