MATLAB学习笔记(二)| 数组类型及矩阵的运算

数组

  •  矩阵

 定义方法:

  1. 按行输入矩阵元素构造矩阵
  2. 冒号运算符构造向量和矩阵

        x= 1:10 ---> 相当于 x = 1 2 3 4 5 6 7 8 9 10

        y= 1:2:10  y从1到10 取第2个数 相当于 y=1 3 5 7 9

        x= 初值:步长:终值

        3. linspace函数生成等间隔向量:x = linspace(初值,终值,向量长度)

        4. 定义复数矩阵:A =[ 1 2 ;3 4]; B = [5 6 ; 7 8];  c= complex( A, B) c是以A为实部,B为虚部生成的复数矩阵

相关函数及操作

  1.  Size返回矩阵的行数和列数 x为一矩阵 size(x) ans= 行数 列数
  2. y=x(a:b,c:d) 提取矩阵x第a行到第b行,第c列到第d列的元素
    1. y=( : , c:d) 提取第c列到第d列的元素
    2. y = x ( :)' 将x矩阵拉长,转置为行向量
  3. 矩阵变形
    1. reshape(x, [a,b])将原有的x矩阵变成 a行 b列的新矩阵
    2. repmat (x, [a,b])

矩阵函数

特殊矩阵函数
函数名 调用格式 说明
zeros B = zeros(n) n*n零矩阵
B = zeros(m,n)或zeros([m,n]) m*n零矩阵
B = zeros(m,n,p,...)或zeros([m,n,p,...]) m*n*p*...零矩阵/数组
B = zeros(size(A)) 与A大小相同的零矩阵
ones B = ones(n) n*n "1"矩阵
B = ones(m,n)或ones([m,n]) m*n "1"矩阵
B = ones(m,n,p,...)或ones([m,n,p,...]) m*n*p*..."1"矩阵/数组
B = ones(size(A)) 与A大小相同的"1"矩阵
eye B = eye(n) n*n 单位矩阵
B = eye(m,n)或eye([m,n]) m*n 单位矩阵
diag  X = diag(v, k ) 以向量v为第k个对角线生成对角矩阵
X = diag(v) 以向量v为主对角元素生成对角矩阵
v = diag(X,k)

返回矩阵X的第k条对角线元素

v = diag(X) 返回矩阵X的主对角线元素
rand B = rand 均匀分布的随机数矩阵
B = rand(n) n*n 随机数矩阵
B = rand(m,n)或 rand ([m,n]) m*n 随机数矩阵
B = rand(m,n,p,...)或 rand([m,n,p,...]) m*n*p*... 随机数矩阵/数组
B = rand(size(A)) 与A大小相同的随机数矩阵
magic M = magic (n) n*n 魔方矩阵

魔方矩阵:n阶魔方矩阵,将n^2 个数填入 n 行 n 列之中,使得每行、每列、两条对角线之和 都等于 n(n^2+1)/2

矩阵算术运算

  1. 加减
  2. 乘法
    1. 直接相乘 A*B; 要求:前面矩阵的列数等于后面矩阵的行数
    2. 点乘  A.* B ; 要求:同型矩阵
  3. 除法
    1. 左除 A\B, x= A\B 是Ax=B的解
    2. 右除 A/ B, x =  A/ B 是xA = B 的解
    3. 点除 A./B, x = A./B 表示同型矩阵A、B对应元素相除
  4. 乘方
    1. 要求:必须是方阵
    2. 三种情况 (A为方阵)
      1. x为正整数,  A ^x --> A自乘 x次
      2. x 为负整数,  A ^x  --> A的逆阵 自乘 x 次
      3.  x为分数, x=m/n, A^x -->A先自乘m次,再对结果矩阵内的每一个元素开n次方
  5. 点乘方
    1. 要求:不要求是方阵
    2. 两种情况
      1. A为矩阵,x为标量: A.^x -->对A中的每一个元素求x次方
      2. A 和 x 为同型矩阵, A.^ x --> 对A中的每一个元素求x中对应元素次方

矩阵关系运算

  1. 大于>
  2. 小于<
  3. 大于等于>=
  4. 等于==
  5. 不等于~=

矩阵的逻辑运算

逻辑运算类型

运算符

含义

“或”:  A|B

 “|”

同型矩阵A和B的或运算,若A和B的对应元素至少有一个非0,则相应的结果元素值为1(真),否则为0(假)

“与”: A& B

“&”

A和B 的对应元素均非0,为1(真),否则0(假)

”非“ ~A

“~”

若A的元素值为0, 则相应结果为1,否则为0

“异或” xor(A,B)

xor()

 A和B对应的元素均为0 或者非0, 则相应结果元素值为0,否则为1

先决或  A||B

“||”

A非0时,结果为1,不用再执行A和B的逻辑或运算;

A为0时,执行A和B的逻辑或运算 即A|B

先决与运算 A&&B

“&&”

A为0时,结果为0,不在执行A和B的逻辑与运算;

A非0时,继续执行A和B 的逻辑与运算 即A&B

矩阵的其他运算

运算

表达式

转置

A'

翻转

  • flipud(A):上下翻转
  • fliplr (A): 左右翻转
  • rot90(A):逆时针90°旋转

行列式

det(A)

逆矩阵

inv(A),A为方阵(可以是数值型矩阵 or 符号型矩阵)

广义逆矩阵

pinv(A),A可以不是方阵

trace(A)

 rank(A)

特征值及特征向量

eig(A)

求A的特征值

eig(A,B)

A,B的广义特征值

[ V,D ] =eig(A)

求方阵A的特征值矩阵 D 和特征向量矩阵 V ,且满足 AV = VD

[ V ,D ] = eig(A, 'nobalance')

A中有较小元素,且其值接近舍入误差时,nobalance可以让结果更加精确

[ V, D ] = eig(A, B )

求广义特征值矩阵D与广义特征向量矩阵V,满足AV = BVD

[ V , D ] = eig(A, B, flag )

用给定算法(flag参数用于指定算法)来求广义特征值矩阵D与广义特征向量矩阵V,满足AV = BVD

  • 高维数组

  1. 直接赋值定义
  2. 利用car函数定义三维数组
    1. A1 = [1 2; 3 4]; A2 = [5 6 ; 7 8 ]; A =cat(3 ,A1, A2)
  3. reshape (a : b, [ c, d ,e]) 定义一个三维数组
  • 结构体数组

structure('field1' , values1 ,'field2', values2, …)

Structure('field1' ,{ values1,values2, …} ,'field2', { values3, values4, …}, …)

  • 元胞数组 --可以将不同类型、不同大小的数组放在一个数组

  1. 定义:
    1. 直接赋值定义:
    2. cell函数定义:

cell(n)

n*n的空元胞数组

cell(m,n)  或 cell([m, n ])

m*n的空元胞数组

cell(m, n, p, …) 

m*n*p*…的空元胞数组

cell(size(A))

生成和矩阵A相同大小的空元胞数组

  • 2. 访问:
    1. C ( i,j)  --> 元胞数组C的第 i 行第 j 列的元胞
    2. C{ i,j } --> 访问元胞数组C的 第 i 行第 j 列的元胞里的元素
    3. celldisp函数显示元胞数组的所有内容

  • 数组转换

函数

含义

mat2cell(矩阵,[行分割方式], [列分割方式)

将矩阵分块转换为元胞数组

cell2mat(元胞数组)

元胞数组转换为矩阵

num2cell(数值数组)

数值型数组转换为元胞

cell2struct(元胞数组,fields,n)

元胞数组转换为n*1的结构数组

struct2cell(结构数组)

结构数组转换为元胞数组

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