MATLAB考点.docx
《MATLAB考点.docx》由会员分享,可在线阅读,更多相关《MATLAB考点.docx(31页珍藏版)》请在冰豆网上搜索。
MATLAB考点
MATLAB考点(不简要)
第一章:
MATLAB是MATrixLABoratory意为矩阵工厂(矩阵实验室)。
MATLAB的搜索路径
当用户在MATLAB命令窗口输入一条命令后,MATLAB按照一定次序寻找相关的文件。
基本的搜索过程是:
(1)检查该命令是不是一个变量。
(2)检查该命令是不是一个内部函数。
(3)检查该命令是否当前目录下的M文件。
(4)检查该命令是否MATLAB搜索路径中其他目录下的M文件。
用户可以将自己的工作目录列入MATLAB搜索路径,从而将用户目录纳入MATLAB系统统一管理。
设置搜索路径的方法有:
(1)用path命令设置搜索路径。
例将用户目录e:
\matlab7\work加到搜索路径下。
在命令窗口输入:
path(path'e:
\matlab7\work')
第二章:
矩阵
矩阵是MATLAB最基本、最重要的数据对象。
MATLAB的大部分运算或命令都是在矩阵(在复数域上)运算的意义下执行的。
标量对应仅含一个元素的矩阵。
数值数据
双精度数,占64位,转换函数double
单精度数,占32位,转换函数single
带符号整数,转换函数int8,int16,int32
无符号整数,转换函数uint8,uint16,uint32
字符数据,转换函数char
结构体类型(Structure)
单元类型(Cell)
逻辑型,非0为true,0为false
1.变量命名
变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。
变量名区分字母的大小写。
MATLAB提供的标准函数名以及命令名必须用小写字母。
2.赋值语句
(1)变量=表达式
(2)表达式(值赋给预定义变量ans)
其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。
利用MAT文件可以把当前工作空间中的一些有用变量长久地保留下来,扩展名是.mat。
MAT文件的生成和装入由save和load命令来完成。
常用格式为:
save文件名[变量名表][-append][-ascii]
load文件名[变量名表][-ascii]
●文件名可以带路径,但不需带扩展名.mat,命令默认对.mat文件进行操作。
●变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔。
当变量名表省略时,保存或装入全部变量。
●-ascii选项使文件以ASCII格式处理,省略该选项时文件将以二进制格式处理。
●-append选项控制将变量追加到MAT文件中。
用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。
在一般情况下,内部每一个数据元素都是用双精度数来表示和存储的。
数据输出时可用format命令设置或改变数据输出格式。
format命令的格式为:
format格式符
其中格式符决定数据的输出格式
用冒号表达式产生行向量,一般格式:
e1:
e2:
e3
其中e1为初始值,e2为步长,e3为终止值。
用linspace函数产生行向量。
调用格式:
linspace(a,b,n)
其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
1.矩阵元素
通过下标引用矩阵的元素,例如
A=[1,2,3;4,5,6]
得A=123
456
A(2,2)=22;
得A=123
426
A(4,5)=10;
得A=12300
42600
00000
000010
reshape(A,m,n)在矩阵总元素保持不变的前提下,将矩阵重新排成m×n矩阵。
x=[1,2,3,4,5,6,7,8,9,10,11,12]
y=reshape(x,3,4)(元素,行,列)
得Y=1234
5678
9101112
z=reshape(y,2,7)%出错,元素数量不对
矩阵拆分
(1)利用冒号表达式获得子矩阵
A(:
j)表示取A矩阵的第j列全部元素;
A(i,:
)表示A矩阵第i行的全部元素;
A(i,j)表示取A矩阵第i行、第j列的元素;
A(i:
i+m,:
)表示取A矩阵第i~i+m行的全部元素;
A(:
k:
k+m)表示取A矩阵第k~k+m列的全部元素;
A(i:
i+m,k:
k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素;
A(:
)将矩阵A每一列元素堆叠起来,成为一个列向量。
end表示某一维的末尾元素下标。
A(end,:
)
A(:
end)
(2)利用空矩阵删除矩阵的元素
给变量X赋空矩阵的语句:
X=[]
注意,X=[]与clearX不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。
1.基本算术运算
MATLAB的基本算术运算有:
+加
-减
*乘
/右除
\左除
^乘方
(1)矩阵加减运算
假定有两个矩阵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)
●对于含有标量的运算,两种除法运算的结果相同。
●对于矩阵运算,一般A\B≠B/A。
●(4)矩阵的乘方
●一个矩阵的乘方运算可以表示成
●A^x
●要求A为方阵,x为标量。
●2.点运算
●有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。
●点运算符有
●.*点乘
●./点右除
●.\点左除
●.^点乘方
●两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。
●函数的自变量规定为矩阵变量。
●运算法则是将函数逐项作用于矩阵的元素上。
●结果是一个与自变量同维数的矩阵。
函数名
含义
三角函数
sqrt
log
log10
log2
exp
pow2
abs
angle
real
imag
conj
rem
mod
fix
floor
ceil
round
sign
gcd
lcm
略
平方根函数
自然对数函数
常用对数函数
以2为底的对数函数
自然指数函数
2的幂
绝对值函数
复数的幅角
复数的实部
复数的虚部
复数共轭运算
求余数或模运算
模运算
向零方向取整
不大于自变量的最大整数
不小于自变量的最小整数
四舍五入到最邻近的整数
符号函数
最大公因子
最小公倍数
6种关系运算符:
<小于
<=小于或等于
>大于
>=大于或等于
==等于
~=不等于
运算法则:
(1)两个标量的比较
若关系成立,结果为1,否则为0。
(2)两个同维数矩阵的比较
对相同位置的元素比较。
(3)标量与矩阵的比较
标量与矩阵的每一个元素比较。
逻辑运算符:
&与
|或
~非
运算法则:
(1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。
(2)a和b是两个标量
●a&ba,b全为非零时,结果为1,否则为0。
●a|ba,b中只要有一个非零,结果为1,否则为0。
●~a当a是零时,结果为1;当a非零时,结果为0。
(3)两个运算量是同维矩阵
相同位置上的元素按标量规则逐个进行。
(4)一个是标量,另一个是矩阵
标量与矩阵中的每个元素之间按标量规则逐个进行。
(5)逻辑非是单目运算符,也服从矩阵运算规则。
(6)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。
字符串是用单撇号括起来的字符序列。
例:
ch='ABc123d4e56Fg9';
将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。
可以建立多行字符串矩阵。
字符串是以ASCII码形式存储的。
abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
相反,char函数可以把ASCII码矩阵转换为字符串矩阵。
第二章课后答案:
3.
(5)t(find(t==0))=eps;
第三章:
3.1.1通用的特殊矩阵
表产生通用特殊矩阵的函数及其含义p39
函数名
含义
zeros
产生全0矩阵(零矩阵)
ones
产生全1矩阵(幺矩阵)
eye
产生单位矩阵
rand
产生0~1间均匀分布的随机矩阵
randn
产生均值为0,方差为1的标准正态分布随机矩阵
3.1.2用于专门学科的特殊矩阵p40
表产生专门学科特殊矩阵的函数及其含义
函数名
含义
magic(n)
求魔方矩阵
vander(V)
生成指定向量为V的范得蒙矩阵
hilb(n)
生成希尔伯特矩阵
invhilb(n)
求n阶希尔伯特矩阵的逆
toeplitz(x,y)
生成托普利兹矩阵
toeplitz(x)
用向量x生成一个对称的托普利兹矩阵
compan(p)
生成伴随矩阵
pascal(n)
生成一个n阶帕斯卡矩阵
(1)魔方矩阵
其每行、每列及两条对角线上的元素和都相等。
对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。
magic(n)求魔方矩阵的函数。
(2)范得蒙(Vandermonde)矩阵
最后一列全为1;
倒数第二列为一个指定的向量;
其他各列是其后列与倒数第二列的点乘积。
vander(V)生成指定向量为V的范得蒙矩阵。
(3)希尔伯特矩阵
元素
hilb(n)生成希尔伯特矩阵的函数。
条件数很差,使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。
invhilb(n)求n阶希尔伯特矩阵的逆的函数。
(4)托普利兹矩阵
除第一行第一列外,其他每个元素都与左上角的元素相同。
(5)伴随矩阵
compan(p)生成伴随矩阵的函数
其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。
(6)帕斯卡(Pascal)矩阵
二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。
由杨辉三角形表组成的矩阵称为帕斯卡矩阵。
pascal(n)生成一个n阶帕斯卡矩阵。
toeplitz(x,y)生成一个以x为第一列,y为第一行的托普利兹矩阵。
这里x,y均为向量,两者不必等长。
toeplitz(x)用向量x生成一个对称的托普利兹矩阵。
3.2矩阵结构变换p43
表矩阵结构变换函数及其含义
函数名
含义
diag(A)
提取矩阵A主对角线元素,产生一个具有min(m,n)个元素的列向量
diag(A,k)
提取第k条对角线的元素
diag(V)
产生一个m×m对角矩阵,其主对角线元素为向量V的元素
diag(V,k)
产生一个n×n(n=m+|k|)对角阵,其第k条对角线的元素为向量V的元素
triu(A)
求矩阵A的上三角阵
triu(A,k)
求矩阵A的第k条对角线以上的元素
tril(A)
求矩阵A的下三角阵
tril(A,k)
求矩阵A的第k条对角线以下的元素
rot90(A,k)
将矩阵A旋转90º的k倍,按逆时针方向
fliplr(A)
对矩阵A实施左右翻转
flipud(A)
对矩阵A实施上下翻转
3.2.1对角阵与三角阵
1.对角阵
只有对角线上有非0元素的矩阵称为对角矩阵。
数量矩阵—对角线上的元素相等的对角矩阵。
单位矩阵—对角线上的元素都为1的对角矩阵。
(1)提取矩阵的对角线元素
设A为m×n矩阵。
Ødiag(A)提取矩阵A主对角线元素,产生一个具有min(m,n)个元素的列向量。
Ødiag(A,k)提取第k条对角线的元素。
(2)构造对角矩阵
设V为具有m个元素的向量。
Ødiag(V)产生一个m×m对角矩阵,其主对角线元素即为向量V的元素。
Ødiag(V,k)产生一个n×n(n=m+|k|)对角阵,其第k条对角线的元素即为向量V的元素。
2.三角阵p44
三角阵分为上三角阵和下三角阵。
Ø上三角阵矩阵的对角线以下的元素全为0的一种矩阵。
Ø下三角阵对角线以上的元素全为0的一种矩阵。
(1)上三角矩阵
Øtriu(A)求矩阵A的上三角阵。
Øtriu(A,k)求矩阵A的第k条对角线以上的元素。
triu(A,0)功能同triu(A)。
(2)下三角矩阵
Øtril(A)求矩阵A的下三角阵。
Øtril(A,k)求矩阵A的第k条对角线以下的元素。
tril(A,0)功能同tril(A)。
3.2.2矩阵的转置与旋转
1.矩阵的转置
转置运算符是单撇号:
'。
2.矩阵的旋转
rot90(A,k)将矩阵A旋转90º的k倍,按逆时针方向。
当k为1时可省略。
3.矩阵的左右翻转
对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。
fliplr(A)对矩阵A实施左右翻转。
4.矩阵的上下翻转
flipud(A)对矩阵A实施上下翻转。
3.4矩阵求值p48
表矩阵求值函数及其含义
函数名
含义
det(A)
求方阵A的行列式的值
rank(A)
求矩阵秩
trace(A)
求矩阵的迹
norm(A)或norm(A,2)
计算2—范数
norm(A,1)
计算1—范数
norm(A,inf)
计算∞—范数
cond(A,1)
计算1—范数下的条件数
cond(A)或cond(A,2)
计算2—范数下的条件数
cond(A,inf)
计算∞—范数下的条件数
3.4.1方阵的行列式值
把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。
det(A)求方阵A所对应的行列式的值。
3.4.2矩阵的秩与迹
1.矩阵的秩
矩阵线性无关的行数与列数称为矩阵的秩。
rank(A)求矩阵秩。
2.矩阵的迹
矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。
trace(A)求矩阵的迹。
3.4.3向量和矩阵的范数
矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。
范数有多种方法定义,其定义不同,范数值也就不同。
1.向量的3种常用范数及其计算函数
V为n维向量
(1)norm(V)或norm(V,2):
计算2—范数。
(2)norm(V,1):
计算1—范数。
(3)norm(V,inf):
计算∞—范数。
2.矩阵的范数及其计算函数
A为m×n矩阵,V为n维向量
(1)norm(A)或norm(A,2):
计算2—范数。
(2)norm(A,1):
计算1—范数。
(3)norm(A,inf):
计算∞—范数。
3.5矩阵的特征值与特征向量p52
表求特征值与特征向量函数及其含义
函数名
含义
E=eig(A)
求全部特征值,构成向量E
[V,D]=eig(A)
求全部特征值,构成对角阵D,并求特征向量构成V的列向量
[V,D]=eig(A,‘nobalance’)
与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量
例3.1用求特征值的方法解方程。
3x5-7x4+5x2+2x-18=0
clc;
p=[3,-7,0,5,2,-18];
A=compan(p);%A的伴随矩阵
x1=eig(A)%求A的特征值
x2=roots(p)%直接求多项式p的零点
习题三
3、个方阵A,求A的逆矩阵和A的行列式的值,并验证A与Aˉ¹是互逆的。
4、求方程解:
4x1+2x2–x3=2
3x1-x2+2x3=10
12x1+3x2=8
第四章
4.1.1M文件的分类
用MATLAB语言编写的程序,称为M文件,文件的扩展名为m。
M文件可以根据调用方式的不同分为两类:
命令文件(ScriptFile)
函数文件(FunctionFile)。
两种文件的主要区别:
(1)命令文件没有输入参数,也不返回输出参数;而函数文件可以带输入参数,也可返回输出参数。
(2)命令文件对工作空间中的变量进行操作;而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。
(3)命令文件可以直接执行;而函数文件要以函数调用的方式来调用它。
程序控制结构p58
顺序结构
选择结构
循环结构
4.2.1顺序结构
按照程序中语句的排列顺序依次执行,直到程序的最后一个语句。
1.数据的输入
从键盘输入数据,可用input函数,调用格式为:
A=input(提示信息,选项);
若在input函数调用时采用's'选项,则允许用户输入一个字符串。
A=input('输入矩阵A:
');
xm=input('What''syourname?
','s');
A
xm
2.数据的输出
命令窗口输出函数disp函数,其调用格式为
disp(输出项)
其中输出项既可以为字符串,也可以为矩阵。
例4.1(顺序结构)求一元二次方程ax2+bx+c=0的根p59
%p59
clc;
a=input('a=?
');
b=input('b=?
');
c=input('c=?
');
d=b*b-4*a*c;
x=[-b+sqrt(d),-b-sqrt(d)]/(2*a);
disp(['x1=',num2str(x
(1)),...
',x2=',num2str(x
(2))]);
3.程序的暂停
暂停程序的执行用pause函数,其调用格式为:
pause(延迟秒数)
pause:
暂停程序,直到用户按任一键后程序继续执行。
Ctrl+c:
强行中止程序的运行。
4.2.2选择结构p60
1.if语句
if语句有3种格式。
(1)单分支if语句:
if条件
语句组
end
当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句;否则直接执行if语句的后继语句。
(2)双分支if语句:
if条件
语句组1
else
语句组2
end
当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。
(3)多分支if语句:
if条件1
语句组1
elseif条件2
语句组2
……
elseif条件m
语句组m
else
语句组n
end
语句用于实现多分支选择结构。
例4.2(ifelseif)字符转换输出p62
输入一个字符:
若为大写字母,则输出其对应的小写字母;
若为小写字母,则输出其对应的大写字母;
若为数字字符则输出其对应的数值;
若为其他字符则原样输出。
clc;
c=input('请输入一个字符','s');
ifc>='A'&c<='Z'
disp(setstr(abs(c)+abs('a')-abs('A')));
elseifc>='a'&c<='z'
disp(setstr(abs(c)-abs('a')+abs('A')));
elseifc>='0'&c<='9'
disp(abs(c)-abs('0'));
else
disp(c);
end
2.switch语句
根据表达式的取值,分别执行不同的语句,其语句格式为:
switch表达式
case表达式1
语句组1
case表达式2
语句组2
……
case表达式m
语句组m
otherwise
语句组n
end
当任意一个分支的语句执行完后,直接执行switch语句的下一句。
3.try语句
语句格式为:
try
语句组1
catch
语句组2
end
try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。
例4.3(trycatch)矩阵乘法和点乘p64
矩阵乘法运算要求两矩阵的维数相容,否则会出错。
先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。
clc;
A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];
try
C=A*B;
catch
C=A.*B;
end
C
lasterr%显示出错原因
4.2.3循环结构p65
1.for语句
for循环变量=表达式1:
表达式2:
表达式3
循环体语句
end
其中:
表达式1的值为循环变量的初值
表达式2的值为步长
表达式3的值为循环变量的终值。
步长为1时,表达式2可以省略。
for语句更一般的格式为:
for循环变量=矩阵表达式
循环体语句
end
执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。
4.3.1全局变量与局部变量p76
函数文件中的变量是局部变量,与其他函数文件及工作空间相互隔离。
若在若干函数中,都把某一变量定义为全局变量,那么这些函数将共用这个变量。
全局变量的作用域是是工作空间,即全程有效,所有的函数都可以对它进行存取和修改。
因此,定义全局变量是函数间传递信息的一种手段。
全局变量用global命令定义,格式为:
global变量名
不提倡使用全局变量的原因:
●破坏函数对变量的封装;
●降低程序的可读性。
习题四
1.先用函数的递归调用定义一个函数文件求
,然后调用该函数文件求
function[y]=sy5_3(n,m)
y=0;
fori=1:
n;
a=i.^m;
y=y+a;
end
>>y=sy5_3(100,1)+sy5_3(50,2)+sy5_3(10,-1)
y=
4.7978e+004
2.写出下列程序的输出结果。
(1)s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23];
fork=a
forj=1:
4
ifrem(k(j),2)~=0
s=s+k(j);
end
end
end
s
(2)