matlab考试重点详解

  此帖是根据期末考试复习重点补充完成,

因为使用word编辑引用图片和连接略有不便,

因此开此贴供复习及学习使用。侵删

复习要点

第一章html

Matlab的基本概念,名称的来源,基本功能,帮助的使用方法java

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(类别),都列出来。 具体看附图。

图转:http://www.javashuo.com/article/p-ghuvowme-nc.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)
注意:在使用这三种方法以前,你们头脑必定要清晰的记住,Matlab中数组元素是按列存储(与Fortran同样),好比说下面的二维数组
A=
      8      1      6
      3      5      7
      4      9      2
Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页对应个元素的索引和下标分别为
 
8.1 下标法引用
A(ii,jj):其中ii和jj能够是一维向量、标量、“:”号或者“end”

你们对下标估计比较熟悉,因为在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
8.2.索引法引用(说白了索引就是存储顺序)

 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语言的区别(取反为~),当矩阵参与到逻辑运算时,只有矩阵元素全为一才为真

 

 

 

第三章

3.1特殊矩阵:zeros,ones,eye,rand,randn,注意怎样生成任意区间的均匀分布和指定均值和方差的正态分布,当心正态分布的方差是个平方值,在公式中使用时要开方才能做为参数。

3.1 通用的特殊矩阵 经常使用的产生通用特殊矩阵的函数有:
zeros:产生全0矩阵(零矩阵)。

ones:产生全1矩阵(幺矩阵)。

eye:产生单位矩阵。

rand:产生0~1间均匀分布的随机矩阵。

randn:产生均值为0,方差为1的标准正态分布随机矩阵。

例3.1.1  分别创建×三、3×2和与矩阵A一样大小的零矩阵。

(1) 创建一个3×3零矩阵。
      zeros(3)
 (2) 创建一个3×2零矩阵。
      zeros(3,2)
 (3) 设A为2×3矩阵,则能够用zeros(size(A))创建一个与矩阵A一样大小零矩阵。
A=[1 2 3;4 5 6];    %产生一个2×3阶矩阵A
zeros(size(A))       %产生一个与矩阵A一样大小的零矩阵

例3.1.2  创建随机矩阵:
(1) 在区间[20,50]内均匀分布的5阶随机矩阵。
(2) 均值为0.六、方差为0.1的5阶正态分布随机矩阵
命令以下:
x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
此外,经常使用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A从新排成m×n的二维矩阵。

 

 

3.2 专门矩阵:幻方阵,范德蒙阵,希尔伯特阵,伴随阵,帕斯卡阵等

3.2.1 魔方矩阵
魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。
例3.2.1  将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。

M=100+magic(5)

 

 3.2.2 范得蒙矩阵

范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其余各列是其后列与倒数第二列的点乘积。能够用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。例如,A=vander([1;2;3;5])便可获得上述范得蒙矩阵。

3.2.3 希尔伯特矩阵
在MATLAB中,生成希尔伯特矩阵的函数是hilb(n)。
使用通常方法求逆会由于原始数据的微小扰动而产生不可靠的计算结果。MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。

例3.2.3 求4阶希尔伯特矩阵及其逆矩阵。
命令以下:
format rat     %以有理形式输出
H=hilb(4)
H=invhilb(4)

3.2.4 托普利兹矩阵
托普利兹(Toeplitz)矩阵除第一行第一列外,其余每一个元素都与左上角的元素相同。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x, y均为向量,二者没必要等长。toeplitz(x)用向量x生成一个对称的托普利兹矩阵。

3.2.4例
T=toeplitz(1:6)

 

3.2.5伴随矩阵
MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例如,为了求多项式的x3-7x+6的伴随矩阵,可以使用命令:
p=[1,0,-7,6];
compan(p)

3.2.6帕斯卡矩阵
咱们知道,二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。

函数pascal(n)生成一个n阶帕斯卡矩阵。

例3.2.6  求(x+y)5的展开式。
在MATLAB命令窗口,输入命令:
pascal(6)
矩阵次对角线上的元素1,5,10,10,5,1即为展开式的系数。

 

3.3三角阵的生成和从已知矩阵中提取三角阵和对角阵

1.对角阵
只有对角线上有非0元素的矩阵称为对角矩阵,对角线上的元素相等的对角矩阵称为数量矩阵,对角线上的元素都为1的对角矩阵称为单位矩阵。

(1) 提取矩阵的对角线元素
设A为m×n矩阵,diag(A)函数用于提取矩阵A主对角线元素,产生一个具备min(m,n)个元素的列向量。
diag(A)函数还有一种形式diag(A,k),其功能是提取第k条对角线的元素。

(2) 构造对角矩阵
设V为具备m个元素的向量,diag(V)将产生一个m×m对角矩阵,其主对角线元素即为向量V的元素。
diag(V)函数也有另外一种形式diag(V,k),其功能是产生一个n×n(n=m+|k|)对角阵,其第k条对角线的元素即为向量V的元素。

2.三角阵
三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线如下的元素全为0的一种矩阵,而下三角阵则是对角线以上的元素全为0的一种矩阵。

 (1) 上三角矩阵
求矩阵A的上三角阵的MATLAB函数是triu(A)。
triu(A)函数也有另外一种形式triu(A,k),其功能是求矩阵A的第k条对角线以上的元素。例如,提取矩阵A的第2条对角线以上的元素,造成新的矩阵B。
(2) 下三角矩阵
在MATLAB中,提取矩阵A的下三角矩阵的函数是tril(A)和tril(A,k),其用法与提取上三角矩阵的函数triu(A)和triu(A,k)彻底相同。

 

3.4矩阵的旋转,转置是旋转的特例

1.矩阵的转置
转置运算符是单撇号(’)。
2.矩阵的旋转
利用函数rot90(A,k)将矩阵A旋转90º的k倍,当k为1时可省略。

3.矩阵的左右翻转
对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,

依次类推。MATLAB对矩阵A实施左右翻转的函数是fliplr(A)。

4.矩阵的上下翻转
MATLAB对矩阵A实施上下翻转的函数是flipud(A)。

 

3.5矩阵求逆及其应用(解方程组)

3.5.1  矩阵的逆与伪逆
对于一个方阵A,若是存在一个与其同阶的方阵B,使得:
A·B=B·A=I (I为单位矩阵)
则称B为A的逆矩阵,固然,A也是B的逆矩阵。
求一个矩阵的逆是一件很是烦琐的工做,容易出错,但在MATLAB中,求一个矩阵的逆很是容易。求方阵A的逆矩阵可调用函数inv(A)。

在线性方程组Ax=b两边各左乘A-1,有

A-1Ax=A-1b

因为A-1A=I,故得

x=A-1b

例  用求逆矩阵的方法解线性方程组。

命令以下:

A=[1,2,3;1,4,9;1,8,27];

b=[5,-2,6]'; 

x=inv(A)*b

也能够运用左除运算符“\”求解线性代数方程组

 

3.6 矩阵的秩与迹
1.矩阵的秩
矩阵线性无关的行数与列数称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。
2.矩阵的迹
矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在MATLAB中,求矩阵的迹的函数是trace(A)。

3.7矩阵的特征值和特征向量及其应用(求解高阶方程)

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),经常使用的调用格式有3种:
(1) E=eig(A):求矩阵A的所有特征值,构成向量E。

 

 

 

 

 

第四章

4.1M文件的分类和区别

用MATLAB语言编写的程序,称为M文件。

M文件能够根据调用方式的不一样分为两类:

命令文件(Script File)和函数文件(Function File)。

 

例4.1  创建一个命令文件将变量a,b的值互换,而后运行该命令文件

程序1:

首先创建命令文件并以文件名exch.m存盘:

clear;

a=1:10;

b=[11,12,13,14;15,16,17,18];

c=a;a=b;b=c;

a

b

而后在MATLAB的命令窗口中输入exch,将会执行该命令文件。

 

程序2:

首先创建函数文件fexch.m:

function [a,b]=exch(a,b)

c=a;a=b;b=c;

而后在MATLAB的命令窗口调用该函数文件:

clear;

x=1:10;

y=[11,12,13,14;15,16,17,18];

[x,y]=fexch(x,y)

 

4.2输入输出语句

若是在input函数调用时采用's'选项,则容许用户输入一个字符串。例如,想输入一我的的姓名,可采用命令:

xm=input('What''s your name?','s');

 

MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为

        disp(输出项)

 

4.3控制不输出和注释

注释%%

 

4.4选择结构:单分支,多分支,注意end的使用,switch中case语句里面若是使用多个数作一个条件应将其写成{n1,n2,n3……,n5}的形式,若是用冒号表达式生产n1~n5,须要用num2cell进行转换,不能用case {n1:n5}的形式,应该是:case num2cell(n1:n5)

4.4.1if语句

在MATLAB中,if语句有3种格式。

(1) 单分支if语句:

    if  条件

        语句组

    end

(2) 双分支if语句:

    if  条件

        语句组1

    else

         语句组2

    end

当条件成立时,执行语句组1,不然执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。

例如:x=input('请输入x的值:');

if x==10

  y=cos(x+1)+sqrt(x*x+1);

else

  y=x*sqrt(x+sqrt(x));

end

y

 

 

 

 

 

 

 

 

 

 

 

 

注意条件的边界

商品打折,百分五分转换

分段函数的两种构造:一种利用逻辑表达式和点运算构造,一种利用矩阵增加实现

 

Try catch条件语句的应用

循环结构,注意for经常使用冒号表达式作循环条件控制

For循环和向量点运算的区别和联系

While循环和break continue语句

 

函数的定义

形参实参怎样传递数据,怎样返回值,怎样返回多个值,输入参数的数量和输出参数的数量nargin,nargout

全局变量的使用

第五章

基本绘图plot(x,y)

用plot绘制多个图

矩阵绘图

用多条plot语句绘图,要使用hold on使多个图同时出如今画面上

Plotyy,在同一坐标绘制双图,其优点,颜色,线性,坐标轴,

绘图选项,图注和坐标控制

Loglog,bar,stem,stairs

 

全部的实验

相关文章
相关标签/搜索