MATLAB基础知识之数组与矩阵

本文是参考书籍《MATLAB R2020a完全自学一本通 》自己整理的一些笔记和一些练习,希望会给大家带来一些帮助。

目录

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 是相同维数的数组。
MATLAB基础知识之数组与矩阵_第1张图片

    乘方格式“.^”实现数组的乘方运算。数组的乘方运算包括数组间的乘方运算、数组与某个具体数的乘方运算,以及常数与数组的乘方运算。      MATLAB基础知识之数组与矩阵_第2张图片

函数dot()可实现数组的点积运算。

MATLAB基础知识之数组与矩阵_第3张图片

 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所提供的构造特殊矩阵的函数。

构造特殊矩阵的函数
名称 功能 名称 功能
ones(n) 构造n x n的全1阵 ones(m,n,...,p) 构造一个mxnx...p的1矩阵
ones(size(A)) 构造和A同样大小的全1阵
zeros(n) 构造n x n的零矩阵 eye(n) 构造n x n的单位阵
magic(n) 构造n x n的矩阵,其中每一行、每一列元素之和都相等 rand(n) 构造n x n的矩阵,其元素为0~1之间均匀分布的随机数
randn(n) 构造n x n的矩阵,其元素为零均值、单位方差的正态分布的随机数 diag(x) 构造n x n的方阵,主对角线元素取自向量x,其余元素为0
diag(A,k)

构造由A第k条主对角线元素组成的列向量

k=0为对角线元素,k<0,为下第k条对角线;k>0,为上第k条对角线

triu(A) 构造一个和A大小相同的上三角矩阵 triu(A,k) 构造一个和A大小相同的上三角矩阵,其第k条及其以上的元素为A中相应的元素
tril(A) 构造一个和A大小相同的下三角矩阵 tril(A,k) 构造一个和A大小相同的上三角矩阵,其第k条及其以下的元素为A中相应的元素

2.2矩阵的操作

      矩阵的操作主要有旋转矩阵、改变矩阵维度、删除矩 阵元素等。MATLAB 中提供的具体此类函数如下表:
矩阵旋转与维度变化相关函数
函数名称 函数功能
fliplr(A) 矩阵每一行均进行逆序排列
flipud(A) 矩阵每一列均进行逆序排列
flipdim(A,dim) 生成一个在 dim维矩阵A内的元素交换位置的多维矩阵
rot90(A) 生成一个由A旋转90度的新矩阵
rot90(A,k) 生成一个由A旋转90xk度的新矩阵
reshape(A,m,n) 生成一个mxnx...xp维矩阵,其元素以线性索引的方式从A中获得
sort(A,x) 对矩阵A进行升序排列并返回排列后的矩阵,当x=1,对每一列进行排序;当x=2时对每一行进行排序
sort(A,x,mode)  

mode= ascend时进行升序排列

mode=descend时进行降序排列

cat(dim,A,B) 将A和B组合成一个dim维的多维矩阵(注意矩阵的形状)

2.3矩阵索引

     在 MATLAB 中,二维数组元素的数字访问可以分为双下标索引和单下标索引。双下标索引是通过一个 二元数组对来对应元素在矩阵中的行列位置,例如A (2,3) 表示矩阵 A 中第 2 行第 3 列的元素。单下标索引的方式是采用列元素优先的原则,对m n 列的矩阵按列排序进行重组,成为一维数组,再取新的一维数组中的 元素位置对应的值作为元素在原矩阵中的单下标。例如对于4×4 的矩阵, A (6) 表示矩阵 A 中第 2 行第 2 列的元 素。
常用索引表达式
矩阵索引表达式 函数功能
A(:,j) 返回矩阵A中第j列的元素

A(i,:)

返回矩阵A中第i行的元素
A(:,j:k) 返回矩阵A中第j列到第k列的元素
A(i:k,:) 返回矩阵A中第i行到第k行的元素
A(i:k,j:k) 返回由二维矩阵A中的第i行到第k行行向量和第j列到第1列列向量的交集组成的子矩阵
A(:) 将矩阵A中的每列合并成一个长的列向量
A([i1,i2,...],[j1,j2,...])   返回矩阵A中第i1行、第i2行等和第j1列、第j2列等的元素
单下标索引值和双下标索引值之间,可以通过 MATLAB 内部函数进行转换即
MATLAB基础知识之数组与矩阵_第4张图片

 2.4矩阵信息的获取

      矩阵的信息主要包括矩阵结构、矩阵大小、矩阵维度、矩阵的数据类型及矩阵占用的内存等

2.4.1矩阵的结构

矩阵结构函数
函数名称 函数功能
isempty(A) 检测矩阵是否为空
isscalar(A) 检测矩阵是否为单元素标量
isvector(A) 检测矩阵是否为只有一列或一行的一维向量
issparse(A) 检测矩阵是否为稀疏矩阵
     这类函数的返回值是逻辑类型的数据。返回值为 “1” 表示该矩阵是某一特定类型的矩阵;返回值为 “0” 表 示该矩阵不是该特定类型的矩阵。

2.4.2矩阵大小

矩阵大小信息获取
函数 函数功能
n=ndims(A) 获取矩阵的维数
[m,n] = size(A) 获取矩阵各维的长度
n= length(A) 获取矩阵最长维的维数
n = numel(A) 获取矩阵元素的个数

2.4.3矩阵的内部元素类型信息获取

       矩阵作为 MATLAB 的内部数据存储和运算结构,其元素可以是各种各样的数据类型 , 对应不同数据类型的元素,可以是数值、字符、结构体等。MATLAB 中提供了一系列关于数据类型的测试函数。
矩阵数据类型测试函数
函数名称 函数功能
isnumeric(A) 检测矩阵A元素是否为数值型变量
isreal(A) 检测矩阵A元素是否为实数数值型变量
isfloat(A) 检测矩阵A元素是否为浮点数值型变量
isinteger(A) 检测矩阵A元素是否为整数型变量
islogical(A) 检测矩阵A元素是否为逻辑型变量
ischar(A) 检测矩阵A元素是否为字符型变量
isstruct(A) 检测矩阵A元素是否为字符型变量
iscell(A) 检测矩阵A元素是否为元胞型变量
iscellstr(A) 检测矩阵A元素是否为元胞型变量

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时,计算矩 阵各行元素的差分。
矩阵分析函数
函数名称 函数功能
norm(x,p)
对任意大于 1 p 值,返回向量或者矩阵 p 阶范数。

normest(A)

normest(A,tol)

估计矩阵A的2阶范数(当一个近似的范数值满足要求时)

使用tol作为允许的相对误差。

rank(A) 矩阵A的秩,即求对角元素
det(A) 矩阵A的行列式
trace 矩阵的迹(矩阵对角元素之和)
null(A) 矩阵的0空间
orth(A) 正交化空间
rref(A) 约化行阶梯形式
subspace 求两个矩阵空间的角度

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稀疏矩阵的创建

稀疏矩阵创建函数
函数用法 功能
sparse(A) 由非零元素和下标创建稀疏矩阵A。如果A已是一个稀疏矩阵,则返回A本身
sparse(m,n) 生成一个mxn的所有元素都是0的稀疏矩阵
sparse(u,v,a) 生成大小为max(u)×max(v)的稀疏矩阵。其中u和v是整数向量(向量长度必须相同),a为实数或复数向量
sparse(u,v,a,m,n) 生成一个mxn的稀疏矩阵,(ui,vi)对应值ai。向量u、v和 a长度必须相同
spconvert(D) 生成一个稀疏矩阵D。D共有3列,第1列为行下标,第2列为列下标,最后一列为元素值
full(S) 将稀疏矩阵S转换成一个满矩阵

MATLAB基础知识之数组与矩阵_第5张图片

 MATLAB基础知识之数组与矩阵_第6张图片

MATLAB基础知识之数组与矩阵_第7张图片

 2.7.2稀疏矩阵的信息获取

函数 函数功能
nnz(B)  查看非零元素的个数
nonzeros(B) 查看非零元素值
 nzmax(B) 查看稀疏矩阵存储空间
spy(B)
图形化显示非零元素的分布
nnz(S)/prod(size(S))
计算稀疏矩阵的非零元素密度

 2.7.3特殊稀疏矩阵的创建

特殊稀疏矩阵的创建
函数 函数功能
speye(m,n) 创建单位稀疏矩阵
spones(B) 创建非零元素为1的稀疏矩阵
sprand(B) 创建非零元素为均匀分布的随机数的稀疏矩阵
sprandn(B) 创建非零元素为高斯分布的随机数的稀疏矩阵
sprandsym(B) 创建非零元素为高斯分布的随机数的对称稀疏矩阵
sprandsym(B) 创建对角稀疏矩阵
sprandsym(B) 为稀疏矩阵分配空间
    对于矩阵的加、减、乘、除运算,只要其中有一个矩阵是满矩阵,则输出的结果都是满矩阵
稀疏矩阵的数乘为稀疏矩阵;稀疏矩阵的幂为稀疏矩阵。

你可能感兴趣的:(矩阵,数据结构,matlab,学习)