Matlab学习笔记(一)矩阵和数组

1.1矩阵的创建与组合

1.1.1 创建简单矩阵

  • matlab的矩阵构建标识符为[],创建一个行向量可以用以下两种方式
    row=[E1,E2,E3,…,Em] 元素之间可以用逗号相隔
    row=[E1 E2 E3 … Em] 元素之间可以用空格相隔
    而行的分隔符则可以用分号;
    方括号标识符只能用来创建二维矩阵
  • matlab中可以用“初值:步长:终值”的方式创立向量

1.1.2 创建特殊矩阵

  • zeros 零矩阵 diag 对角矩阵 ones 所有元素全为1的矩阵 eye单位矩阵
  • magic 魔方矩阵 rand 随机产生均匀分布的矩阵 randn 随机产生正态分布的矩阵
  • randperm 产生一个由指定整数元素随机分布构成的矩阵

1.1.3 矩阵的合并

  • C=[A B]表示将矩阵在水平方向上合并 C=[A;B]表示将矩阵在竖直方向上合并

1.2 矩阵的寻访与赋值

1.2.1 矩阵的标识

  • 全下标标识法 A(3,5)
  • 单下标标识法 若全下标元素的位置为(a,b),在m*n的二维矩阵中,相应单下标为 c=(b-1)*m+a
    sub2ind 可以根据全下标换算出单下标 ind2sub 可以根据单下标换算出全下标
  • 逻辑1标识法 用一个基于原矩阵A相对位置的逻辑数组B来对A进行寻访,数组B中每一个ture值也就
    表示相对位置的A中的元素可以被寻访

1.2.2 矩阵的寻访

  • d=a(1,:) 使用冒号可以寻访全行元素 d=a(:,1) 使用冒号可以寻访全列元素
  • f=a( : ) 单下标寻访 按照单下标标识作为一列显示
  • g=a(:,[1,3]) 寻访地址可以是向量,以同时寻访多个元素

1.3 进行数组运算的常用函数

1.3.1 Matlab常用基本数学函数

  • abs(x) 纯量的绝对值或向量的长度 angle(z)复数z的相角 sqrt(x) 开平方 real/imag(z) 复数z的实/虚部
  • conj(z) 共轭复数 round(x) 四舍五入至最近整数 fix(x) 无论正负,舍去小数至最近整数
  • floor(x) 地板函数,舍去正小数至最近整数 ceil(x) 天花板函数 加入正小数至最近整数
  • rat(x) 将实数x化为分数表示 rats(x)将实数x化为多项分数展开
  • sign(x) 符号函数 rem(x,y) 求x除以y的余数
  • gcd(x,y) 求最大公因数 lcm(x,y) 求最大公倍数
  • pow2(x,y) 2的指数

1.3.2 适用于向量的常用函数

  • min(x) 向量x中元素的最小值 mean(x) 平均值 median(x) 中位数
  • std(x) 标准差 diff(x) 相邻元素的差 sort(x) 对x的元素进行排序
  • norm(x) x的欧式长度 prod(x) x的元素总乘积 cumsum(x) 向量x的累计元素总和
  • dot(x,y) 向量x和y的内积 cross(x,y) 向量x和y的外积

1.4 查询矩阵信息

1.4.1 矩阵的形状信息

  • length 返回矩阵最长的一维的长度 numel 返回矩阵的元素个数
  • ndims 返回矩阵的维数 size 返回矩阵各维的长度

1.4.2 矩阵的数据类型

  • isa 查询输入矩阵是否是给定类型 iscell 查询输入矩阵是否是cell数组
  • iscellstr 是否是由字符串构成的cell数组 ischar 是否是字符串
  • isineger 是否是整数数组 islogical 是否是逻辑数组

1.4.3 矩阵的数据结构

  • isempty 查询输入矩阵是否为空 isscalar 查询是否是1x1标量
  • issparse 查询是否为稀疏矩阵 isvector 查询是否是向量

1.5 矩阵的重构

1.5.1 矩阵元素的拓展与删除

  • A=magic(4) A(6,7)=17 A的原始矩阵并没有(6,7)这个元素,通过对这个位置赋值,A拓展为6x7矩阵
  • A=magic(4) A(:,1)=[] 通过将行或者列指定为空矩阵[],即可从矩阵中删除行和列

1.5.2 矩阵的重构

  • B=rot90(A) 矩阵B由A逆时针旋转90度得到 B=rot90(A,k) 逆时针旋转k*90度得到
  • B=flipud(A) B由A上下翻转所得 B=fiiplr(A) B由A左右翻转所得
  • B=reshape(A,m,n) 矩阵B的维数为(mn),mn等于A的行和列之积
  • L=tril(A,K) L矩阵第k条对角线及以下的元素取矩阵A的元素,其余为0
  • L=tril(A) L矩阵主对角线及以下的元素取矩阵A的元素,其余为0
  • U=triu(A,K) U矩阵第k条对角线及以上的元素取矩阵A的元素,其余为0

1.6 稀疏矩阵

1.6.1 稀疏矩阵的存储方式

  • Matlab仅存储稀疏矩阵中的非零元素及其对应的位置
  • Matlab采用3个内部数组来保存元素为实数的稀疏矩阵,例如有一m行n列的稀疏矩阵A,有nnz个非零元
    第一个数组以浮点格式存储所有非零元素,此数组大小为nnz
    第二个数组存储非零元素相对应的行号,元素都为整数,也有nnz个元素
    第三个数组包含一个整数指针,对应于每一列的开始处,此数组大小为n

1.6.2 稀疏矩阵的创建

  • 使用函数s=sparse(A) 可以将A转换为稀疏矩阵,用函数full可以将稀疏矩阵转换为一般矩阵

  • 直接创建稀疏矩阵:S=sparse(i,j,s,m,n)
    其中i和j都为矢量,分别是矩阵中非零元的行号和列号,s是一个全部元素为非零的矢量,
    m为输出的稀疏矩阵的行数,n为列数

  • 从对角线元素中创建稀疏矩阵:S=spdiags(B,d,m,n)
    用于创建一个大小为m行n列的稀疏矩阵S,其非零元素来自矩阵B中的元素且按对角线排列
    d指定B中用于生成稀疏矩阵B的对角线位置

  • 从外部文件导入稀疏矩阵

1.7 多维数组

1.7.1 多维数组的创建

  • 直接通过“全下标”元素赋值的方式:A(3,3,3)=1
  • 由若干同样大小的二维数组组合成多维数组:A(:,:,1)=magic(4);A(:,:,2)=ones(4);
  • 由函数ones,zeros,rand,randn等直接创建特殊多维数组:B=rand(3,4,3)
  • 借助cat,repmat,reshape等函数构建多维数组:
    B=cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3)
    cat指令第一个输入变量填写的数字表示“扩展方向的维号”

1.8 多项式的表达式及其操作

1.8.1 多项式的表达式

  • Matlab用一个行向量来表示,此行向量就是将幂指数降序排列之后多项式各项的系数
  • p(x)=x^3-2x-5 则 p=[1 0 -2 -5]

1.8.2 多项式行向量的创建方法

  • 利用命令P=poly(A)生成多项式系数向量,若A是方阵,P就是该方阵的特征多项式,若A为一个向量,A的元素就被认为是P的根

1.8.3 多项式运算函数

  • conv 卷积和多项式乘法 poly 求具有指定根的多项式 polyder 多项式求导 polyeig 多项式本征值
  • deconv去卷积和多项式除法 polyfit 多项式拟合 polyint 解析多项式积分 roots多项式的根

全部内容来自《MATLAB从入门到精通》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值