此帖是根据期末考试复习重点补充完成,
由于使用word编辑引用图片和链接略有不便,
所以开辟此贴复习及学习使用。侵删
复习要点
第一章
Matlab的基本概念,名称的来源,基本功能,帮助的使用方法
1.基本概念和名称来源:MATLAB [1] 是美国MathWorks公司出品的商业数学软件,
用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)
2.基本功能:
2.1数值计算和符号计算功能
MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。
2.2绘图功能,matlab提供了两个层次的绘图操作。一种是对图形句柄,进行底层绘图操作。另一种是建立在低层绘图操作之上的高层绘图操作。
2.3编程语言
MATLAB具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高
2.4MATLAB工具箱
MATLAB包含两部分内容:基本部分和各种可选的工具箱。
MATLAB工具箱分为两大类:功能性工具箱和学科性工具箱。
3.帮助的使用方法
3.1 帮助命令
MATLAB帮助命令包括help命令和lookfor命令。
3.1.1 help命令
在MATLAB 命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。同样,可以通过help加函数名来显示该函数的帮助说明。
3.1.2 lookfor命令
help命令只搜索出那些关键字完全匹配的结果,lookfor命令对搜索范围内的M文件进行关键字搜索,条件比较宽松。
lookfor命令只对M文件的第一行进行关键字搜索。若在lookfor命令加上-all选项,则可对M文件进行全文搜索。
3.2 帮助窗口
进入帮助窗口可以通过以下3种方法:
3.2.1 单击MATLAB主窗口工具栏中的Help按钮。
3.2.2 在命令窗口中输入helpwin、helpdesk或doc。
3.2.3 选择Help菜单中的“MATLAB Help”选项。
第二章
1.变量的命名规则(也是函数和文件的命名规则)
2.预定义变量:pi,ans,lasterr等等
Pi 圆周率π
Ans 最新计算结果的默认变量名
3.内存变量的管理:who,whos
直接在command window里面打whos这个命令。就会把workspace里面所有变量的 Name(变量名), Size(维数), Bytes(占用字节数), Class(类别),都列出来。 具体看附图。
图转:https://www.cnblogs.com/ky027wh-sx/p/5956588.html
4.内存变量的保存和恢复:
4.1变量保存
用save可以保存变量。
save data1 表示保存工作空间所有的变量到data1.mat中
save data2 m 表将工作空间的m变量保存到data2.mat中,如果工作空间没有m会报错。
save data3 m n p v 表示将工作空间中的 m n p v 四个变量保存到data3.mat中,如果工作空间没有这四个变量中的一个也会报错。
4.2变量恢复
Load data3.mat 读取环境变量,恢复变量。
5.矩阵的建立方法,定界符[ ],分隔符:空格或者逗号分隔同一行元素,分号分或回车隔不同行
Eg:
或
Eg:
6.利用已有矩阵建立大矩阵
6.1横向拼接
6.2纵向拼接
7.冒号表达式和linspace函数
8.矩阵元素的引用:单元素,多元素(要使用冒号表达式,本质是用矩阵做下标)
Matlab中数组元素引用有三种方法
1
.下标法(subscripts)
2
.索引法(index)
3
.布尔法(Boolean)
A=
8
1
6
3
5
7
4
9
2
大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如
A(
2
:
3
,
3
:-
1
:
1
)表示引用数组中的
2
~
3
行,
3
~
1
列对应的元素
A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列
A(
1
,end-
1
)表示引用第
1
行倒数第
2
个元素
A([
2
1
3
3
],[
1
1
2
2
1
])表示引用按两个向量引用指定的元素,即A中的第
2
,
1
,
3
,
3
行和第
1
,
1
,
2
,
2
,
1
列对应的元素
>>A=magic(
3
)
A =
8
1
6
3
5
7
4
9
2
>>A(
2
:
3
,
3
:-
1
:
1
)
ans =
7
5
3
2
9
4
>>A(:,end)
ans =
6
7
2
>>A(
1
,end-
1
)
ans =
1
>>A([
2
1
3
3
],[
1
1
2
2
1
])
ans =
3
3
5
5
3
8
8
1
1
8
4
4
9
9
4
4
4
9
9
4
 A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组
下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单
[I,J] = ind2sub(siz,IND)
IND = sub2ind(siz,I,J)
还有使用A(:)就可以将数组A转换为列向量
A(8):表示引用A的第8个元素
B=A([1 10 5 2 2 1 3]):表示依次引用A的第1,10,5,2,2,1,3个元素,返回与index尺寸相同的数组,也就是说size(B)=size(index)
A([2 5 9;1 1 1;8 5 6]):返回的时侯是一个3*3的矩阵
>>A=magic(
5
)%括号中为索引值
A =
17
(
1
)
24
(
6
)
1
(
11
)
8
(
16
)
15
(
21
)
23
(
2
)
5
(
7
)
7
(
12
)
14
(
17
)
16
(
22
)
4
(
3
)
6
(
8
)
13
(
13
)
20
(
18
)
22
(
23
)
10
(
4
)
12
(
9
)
19
(
14
)
21
(
19
)
3
(
24
)
11
(
5
)
18
(
10
)
25
(
15
)
2
(
20
)
9
(
25
)
>>A(
8
)
ans =
6
>>A([
1
10
5
2
2
1
3
])
ans =
17
18
11
23
23
17
4
>>A([
2
5
9
;
1
1
1
;
8
5
6
])
ans =
23
11
12
17
17
17
6
11
24
8.3布尔法引用
A(X):X是一个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A中的存储顺序,返回一个列向量
假如说A是3*3的数组
A(logical([1 0 0;0 1 0;0 0 1])):表示引用了数组A的对角线元素,注意必须使用logical将0/1数组转换为布尔型
>>A=magic(
3
)%生成一个
3
*
3
的数组
A=
8
1
6
3
5
7
4
9
2
>>x=logical([
1
1
0
;
0
1
1
;
1
0
1
])%将
double
转化为
boolean
型数据
x =
1
1
0
0
1
1
1
0
1
>>A(x)%引用对应位置为
1
的数据,返回列向量
ans =
8
4
1
5
7
2
>>x=A>
5
%是有了比较语句,返回布尔型数据,对应位置数据大于
5
的为
1
,否则为
0
x =
1
0
1
0
0
1
0
1
0
>>A(x)%返回大于A中大于
5
的元素,其实该命令可以一次性执行A(A>
5
)或者find(A>
5
),前者返回具体元素,后者返回大于
5
的数据的索引值
ans =
8
9
6
7
>>A(A>
5
)%一次性执行上面的命令
ans =
8
9
6
7
>>indx=find(A>
5
)%查找A中对于
5
的元素,返回它们的索引(index)值,此时我们可以通过A(index)返回具体的元素
index =
1
6
7
8
参考 https://blog.csdn.net/love_wanling/article/details/77103708
9.矩阵的运算:
矩阵运算可参考ppt,或通过检索查找(以下为笔者举出的两例,但不仅限):
https://jingyan.baidu.com/article/3c343ff7c867a50d36796360.html
https://jingyan.baidu.com/article/6766299799a99654d51b84a8.html
+-.*./ 同维矩阵对应元素比较
*/矩阵维数必须相容 注意左除和右除,谁在斜线下方谁求逆
1/1
10.运算优先级
优先级从高到低:
1. 圆括号()
2. 转置(.')、共轭转置(’)、乘方(.^)、矩阵乘方(^)
3. 一元加法(+)、一元减法(-)、取反(~)
4. 乘法(.*)、矩阵乘法(*)、右除(./)、 左除(.\)、 矩阵右除(/)、矩阵 左除(\)
5. 加法(+)、减法(-)、逻辑非(~)
6. 冒号运算符(:)
7. 小于、小于等于、大于、大于等于、等于、不等于
8. 逐逻辑运算与(&)
9. 逐逻辑运算或(|)
10. "避绕式"逻辑与(&&)
11. "避绕式"逻辑与(||)
11.常用函数length,sum,find
11.1size
获取数组的行数和列数
11.2length
数组长度,即行数和列数中的较大值,相当于max(size(a))
11.3numel
返回元素总数
11.4 sum
a=sum(x);%列求和
a=sum(x,2);%行求和
a=sum(x(:));%矩阵求和
11.5 find
11.5.1 b=find(a),a是一个矩阵,查询非零元素的位置,如果X是一个行向量,则返回一个行向量,
否则,返回一个列向量。如果X全是零元素或者是空数组,
则返回一个空数组,例子如下所示,也可以用b=find(a>2),这句的意思是在a中找到比较2大的元素
11.5.2:
b=find(a,2),找出a中最先出现的2个不为零的数,a是你所要找的矩阵,2参数是指数量所下图
11.5.3 c=find(a,2,'last') 这句的意思是从最后一个非零元素起,找2个不为零的元素
其他等find函数用法,本贴不再介绍。具体可以参考https://jingyan.baidu.com/article/3c343ff71444890d3679635d.html
12. 4个取整函数的区别要会使用
12.1 Fix() (向零方向取整)
12.2 Round()(四舍五入,向最大的方向取整)
12.3 Floor() (向负无穷小取整)
12.4 Ceil (向正无穷大取整)
13. 关系运算和运算符,注意和c语言的区别(不等于~=而非!=),另外,MATLAB中关系或逻辑运算的参与方有矩阵时,表现为矩阵中对应元素比较或者矩阵中每个元素与标量比较,其运算结果为矩阵
逻辑运算的的运算符,注意和c语言的区别(取反为~),当矩阵参与到逻辑运算时,只有矩阵元素全为一才为真
第三章
特殊矩阵:zeros,ones,eye,rand,randn,注意怎样生成任意区间的均匀分布和指定均值和方差的正态分布,小心正态分布的方差是个平方值,在公式中使用时要开方才能作为参数。
专门矩阵:幻方阵,范德蒙阵,希尔伯特阵,伴随阵,帕斯卡阵等
三角阵的生成和从已知矩阵中提取三角阵和对角阵
矩阵的旋转,转置是旋转的特例
矩阵的翻转,上下左右
矩阵求逆及其应用(解方程组)
矩阵的秩和迹
矩阵的特征值和特征向量及其应用(求解高阶方程)
第四章
M文件的分类和区别
输入输出语句
控制不输出和注释
选择结构:单分支,多分支,注意end的使用,switch中case语句里面如果使用多个数做一个条件应将其写成{n1,n2,n3……,n5}的形式,如果用冒号表达式生产n1~n5,需要用num2cell进行转换,不能用case {n1:n5}的形式,应该是:case num2cell(n1:n5)
注意条件的边界
商品打折,百分五分转换
分段函数的两种构造:一种利用逻辑表达式和点运算构造,一种利用矩阵增长实现
Try catch条件语句的应用
循环结构,注意for常用冒号表达式做循环条件控制
For循环和向量点运算的区别和联系
While循环和break continue语句
函数的定义
形参实参怎样传递数据,怎样返回值,怎样返回多个值,输入参数的数量和输出参数的数量nargin,nargout
全局变量的使用
第五章
基本绘图plot(x,y)
用plot绘制多个图
矩阵绘图
用多条plot语句绘图,要使用hold on使多个图同时出现在画面上
Plotyy,在同一坐标绘制双图,其优势,颜色,线性,坐标轴,
绘图选项,图注和坐标控制
Loglog,bar,stem,stairs
所有的实验