本文是参考书籍《MATLAB Ra完全自学一本通 》自己整理的一些笔记和一些练习,希望会给大家带来一些帮助。
目录
1、数组创建与运算
1.1数组的创建
1.2数组的运算
1.2.1 算术运算
1.2.2关系运算与逻辑运算
2、矩阵的构造与操作
2.1矩阵的构造
2.2矩阵的操作
2.3矩阵索引
2.4矩阵信息的获取
2.4.1矩阵的结构
2.4.2矩阵大小
2.4.3矩阵的内部元素类型信息获取
2.5矩阵分析
2.6特征值和特征向量
2.7稀疏矩阵
2.7.1稀疏矩阵的创建
2.7.2稀疏矩阵的信息获取
2.7.3特殊稀疏矩阵的创建
1、数组创建与运算
1.1数组的创建
在 MATLAB 中一般使用方括号 “[ ]” 、逗号 “,” 、空格和分号 “;” 来创建数组,数组中同一行的元素使用逗 号或空格进行分隔,不同行之间用分号进行分隔; 可以通过冒号创建一维数组; 通过
logspace()函数创建一维数组;用法:y=logspace(a,b,n) :该函数创建行向量 y ,第一个元素为 10 a ,最后一个元素为 10 b ,形成总数为 n 个元素的等比数列。 通过
linspace()函数创建一维数组; 用法:y=linspace(a,b,n):该函数创建行向量 y ,第一个元素为 a ,最后一个元素为 b ,形成总数为 n 个元素的线性间隔向量
1.2数组的运算
1.2.1 算术运算
数组的运算是从数组的单个元素出发,针对每个元素进行的运算。在 MATLAB 中,一维数组的算术运 算包括加、减、乘、左除、右除和乘方( 两个数组的维数须相同 )。 数组的乘除运算:通过格式 “.*” 或 “./” 可实现数组的乘除运算。 乘法:数组 A 和 B 的维数相同,运算为数组对应元素 相乘 ,计算结果与 A 和 B 是相同维数的数组。 除法:数组 A 和 B 的维数相同,运算为数组对应元素 相除 ,计算结果与 A 和 B 是相同维数的数组。
乘方格式“.^”实现数组的乘方运算。数组的乘方运算包括数组间的乘方运算、数组与某个具体数的乘方运算,以及常数与数组的乘方运算。
函数dot()可实现数组的点积运算。
1.2.2关系运算与逻辑运算
MATLAB提供的关系运算符与逻辑运算符可参考上篇所述。
关系运算的运算法则如下: ● 当两个比较量是标量时,直接比较两个数的大小。若关系成立,则返回的结果为 1 ,否则为 0 。 ● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参 与比较的数组维数相同的数组,其组成元素为0 或 1 。 逻辑运算的运算法则如 下: ● 如果是非零元素则为真,用 1 表示;如果是零元素则为假,用 0 表示。 ● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的逻辑运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0 或 1 。 ● 在进行与运算(a&b)时, a 、 b 全为非零,则为真,运算结果为 1 。在进行或运算(a|b)时,只要a、b有一个为非零,则运算 结果为1 。在进行非运算(~a)时,若a为 0 ,则运算结果为 1 ;若a为非零,则运算结果为 0 。
2、矩阵的构造与操作
2.1矩阵的构造
矩阵的构造方式除了通过直接对变量赋值以外另外一种及可以通过MATLAB所提供的构造特殊矩阵的函数。
2.2矩阵的操作
矩阵的操作主要有旋转矩阵、改变矩阵维度、删除矩 阵元素等。MATLAB 中提供的具体此类函数如下表:
2.3矩阵索引
在 MATLAB 中,二维数组元素的数字访问可以分为双下标索引和单下标索引。双下标索引是通过一个 二元数组对来对应元素在矩阵中的行列位置,例如
A(2,3) 表示矩阵
A中第 2 行第 3 列的元素。单下标索引的方式是采用列元素优先的原则,对m行n列的矩阵按列排序进行重组,成为一维数组,再取新的一维数组中的 元素位置对应的值作为元素在原矩阵中的单下标。例如对于4×4 的矩阵,
A(6) 表示矩阵
A中第 2 行第 2 列的元 素。 单下标索引值和双下标索引值之间,可以通过 MATLAB 内部函数进行转换即
2.4矩阵信息的获取
矩阵的信息主要包括矩阵结构、矩阵大小、矩阵维度、矩阵的数据类型及矩阵占用的内存等
2.4.1矩阵的结构
这类函数的返回值是逻辑类型的数据。返回值为 “1” 表示该矩阵是某一特定类型的矩阵;返回值为 “0” 表 示该矩阵不是该特定类型的矩阵。
2.4.2矩阵大小
2.4.3矩阵的内部元素类型信息获取
矩阵作为 MATLAB 的内部数据存储和运算结构,其元素可以是各种各样的数据类型 , 对应不同数据类型的元素,可以是数值、字符、结构体等。MATLAB 中提供了一系列关于数据类型的测试函数。
2.5矩阵分析
在 MATLAB 中,用在函数后面加撇号 “ ' ” 来表示矩阵的转置。MATLAB 中函数
find()的作用是进行矩阵元素的查找,它通常与关系函数和逻辑运算相结合。其调用格式如下: ● ind=find(X) :该函数查找矩阵 X 中的非零元素,函数返回这些元素的单下标。 ● ind=find(X=0) :该函数查找矩阵 X 中的零元素,函数返回这些元素的单下标。 ● [row,col]=find(X,...) :该函数查找矩阵 X 中的非零元素,函数返回这些元素的双下标 i 和 j 。MATLAB 中函数
sum()和cumsum()的作用是对矩阵的元素求和。其调用格式如下: ● B=sum(A) :该函数对矩阵 A 的元素求和,返回由矩阵 A 各列元素的和组成的向量。 ● B=sum(A,dim) :该函数返回在给定的维数 dim 上元素的和。当 dim=1 时,计算矩阵 A 各列元素的 和;当 dim=2 时,计算矩阵 A 各 行元素的和。 MATLAB 中函数
prod()和cumprod()的作用是对矩阵的元素求积。其调用格式如下: ● B=prod(A) :该函数对矩阵 A 的元素求积,返回由矩阵 A 各列元素的积组成的向量。 ● B=prod(A,dim) :该函数返回在给定的维数 dim 上元素的积。当 dim=1 时,计算矩阵 A 各列元素的积;当 dim=2 时,计算矩阵 A 各行元素的积。MATLAB 中函数
diff()的作用是计算矩阵元素的差分。其调用格式如下: ● Y=diff(X,n,dim):计算矩阵在给定的维数dim上元素的n阶差分。当dim=1时,计算矩阵各列元素的差分;当dim=2时,计算矩 阵各行元素的差分。
2.6特征值和特征向量
特征值和特征向量的定义学过线代的都清楚,这里不过多赘述,下面简单介绍一些相关函数。 eig(A):求包含矩阵A的特征值的向量。 [X,D]=eig(A): 产生一个矩阵 A 的特征值在对角线上的对角矩阵 D 和矩阵 X ,它们的列是相应的特征向量,满足 AX=XD 。为了得到有更好条件特征值的矩阵,要进行相似变换。 [T,B]=balance(A): 找到一个相似变换矩阵 T 和矩阵 B ,使得它们满足 B=T-A∙T 。 eig(A,'nobalance'): 不经过平衡处理求得矩阵 A 的特征值和特征向量,也就是不进行平衡相似变换。 eigs(A): 返回一个由矩阵 A 的部分特征值组成的向量,和 eig 命令一样,但是不返回全部的特征值。如果不带有参量,则计算 出最大的特征值。当计算所有特征值时,如果矩阵 A 的秩不小于 6 ,则计算出 6 个特征值。 eigs(f,n): 求出矩阵 A 的部分特征值。在使用一个矩阵列的线性运算符时,字符串 f 中包含的是 M 文件的文件名, n 指定问题的 阶次。用这种方法来求特征值比开始就用运算符来求要快。 eigs(A,B,k,sigma): 求矩阵 A 的部分特征值,矩阵 B 的大小和A相同;如果没有给出B=eye(size(A)),那么k就是要计算的特征值 的个数;如果k没有给出,就用小于6 的数或者A的秩。 变量sigma是一个实数或复数的移位参数,或者下列文本字符串中的一个,文本字符串指明的是特征值的属性:“lm”为最大的特征值,“sm”为最小的特征值,“lr”为最大的实数部分,“sr”为最小的实数部 分,“be”为同时求得最大和最小的实数部分。 condeig(A) :返回一个由矩阵 A 的特征值条件数组成的向量。 [V,D,s]=condeig(A) :返回 [V,D]=eig(A) 和 s=condeig(A) 。
2.7稀疏矩阵
在许多问题中涉及到的矩阵含有大量的0元素,其被称为稀疏矩阵。MATLAB中考虑到矩阵的稀疏性,在对它进行运算时有特殊的命令。为减少存储空间稀疏矩阵存储时
只对非零元素下标和值进行储存。2.7.1稀疏矩阵的创建
2.7.2稀疏矩阵的信息获取
2.7.3特殊稀疏矩阵的创建
对于矩阵的加、减、乘、除运算,只要其中有一个矩阵是
满矩阵,则输出的结果都是
满矩阵。 稀疏矩阵的数乘为稀疏矩阵;稀疏矩阵的幂为稀疏矩阵。