zoukankan      html  css  js  c++  java
  • [matlab] 矩阵操作

    >_<:矩阵构造

    1.简单矩阵构造

    最简单的方法是采用矩阵构造符“[]”。构造1´n矩阵(行向量)时,可以将各元素依次放入矩阵构造符[]内,并且以空格或者逗号分隔;构造m´n矩阵时,每行如上处理,并且行与行之间用分号分隔。

    2.特殊矩阵构造

    在MATLAB中还提供一些函数用来构造特殊矩阵,这些函数如下表所示。

    (1)ones(n) 或ones(m,n)产生mXn全为1的矩阵
    (2)zeros(n) 或 zeros(m,n)产生mXn全为0的矩阵
    (3)eye(n)产生nXn的单位矩阵
    (4)diag(v)将向量v转化为一个对角矩阵
    (5)magic(n)产生nXn的模方矩阵[每行每列之和相等]
    (6)rand(n)或 rand(m,n)产生mXn的随机矩阵,其中随机数分布服从0~1的均匀分布
    (7)randn(n) 或 randn(m,n)产生mXn的随机矩阵,其中随机数服从标准高斯分布[均值为0方差为1]
    (8)randperm(n)产生1~n的随机排列

    3.向量构造

    最简单的方法是采用向量构造符“:”,其常用的用法如下。

    (1)a:b  返回以a为起点,以1为步长,且所有取值在a与b之间的向量。
    (2)a:s:b 返回以a为起点,以s为步长,且所有取值在a与b之间的向量。

    >_<:矩阵大小的改变

    1.矩阵的合并

    矩阵的合并就是把两个或者两个以上的矩阵连接成一个新矩阵。矩阵构造符[] 可用于构造矩阵,并可以作为一个矩阵合并操作符。

     Ø  表达式C=[A B]在水平方向合并矩阵A和B [具有相同行数的两个矩阵,合并为一个新矩阵,否则不行]
       Ø  表达式C=[A;B]在竖直方向合并矩阵A和B [具有相同列数的两个矩阵,合并为一个新矩阵,否则不行]
     
     
    2.函数调用合并矩阵
     
    (1)cat(1,A,B)和[A;B]一样  cat(2,A,B)和[A B]一样
    (2)horzcat(A,B)和[A B]一样
    (3)vertcat(A,B)和[A;B]一样
    (4)repmat(A,M,N)得到MXN块矩阵,每块都为A
    (5)blkdiag(A,B)得到以矩阵A和B为对角块的矩阵
     
     
    >_<:矩阵行列的删除
         
    1、删除矩阵的某一行或者是某一列:只需将该行或者该列赋予一个空矩阵[]即可:A(2,:)=[]第二行为空
     
     
    >_<:矩阵下标引用
    1、访问单个元素可用A(i,j)
    2、线性引用元素
      Ø  对于矩阵A,线性引用元素的格式为A(k)。通常这样的引用用于行向量或列向量,但也可用于二维矩阵。
      Ø  MATLAB按列优先排列的一个长列向量格 式(线性引用元素)来存储矩阵元素。
      例如:A=zeros(3);那么A(3,2)就是对应位置从(1,1)竖着编号的号码k,A(k)
    3、访问多个元素

      操作符“:”可以用来表示矩阵的多个元素。若A是二维矩阵,其主要用法如下:

      Ø  A(:,:) 返回矩阵A的所有元素。
      Ø  A(i,:) 返回矩阵A第i行的所有元素。
      Ø  A(i,k1:k2) 返回矩阵A第i行的自k1到k2列的所有元素。
      Ø  A(:,j) 返回矩阵A第j列的所有元素。
      Ø  A(k1:k2,j) 返回矩阵A第j列的自k1到k2行的所有元素。

         若A是多维矩阵,也可以通过类似的方法实现对其访问。

    >_<:矩阵信息的获取

    1、矩阵尺寸信息

      Ø size(X)或size(X,dim)返回各个方向的长度,以向量的方式存储;后一个是返回指定方向的长度
      Ø length(x)返回各个方向中最长长度
      Ø ndims(A)矩阵的维数
      Ø numel(A)矩阵的元素个数

    2、元素的数据类型[is---略]

    3、矩阵的数据结构[is---略]

    4、矩阵结构的改变

      Ø reshape(A,m,n)把A重新排列为mXn的矩阵[按照长列向量的顺序重排元素]
      Ø rot90(A)或rot90(A,k)逆时针旋转矩阵900或k*900
      Ø fliplr(A)以竖直方向为轴做镜像
      Ø filpud(A)以水平方向为轴做镜像
      Ø flipdim(A,dim)以指定轴做镜像[1水平、2竖直]
      Ø transpose(A)矩阵的转秩相当于B=A.'
      Ø ctranspose(A)矩阵的共轭转秩相当于B=A'
     

    >_<:稀疏矩阵

    Ø  在MATLAB中,可以用满矩阵存储方式和稀疏矩阵存储方式来存储矩阵。
    Ø  若一个矩阵只有少数的元素非零,称为稀疏矩阵。稀疏矩阵非零元素及其对应的下标来表示。
    Ø  用户可以创建双精度、复数和逻辑等类型的稀疏矩阵。
     
    1、稀疏矩阵的创建
      Ø  在MATLAB中,用函数sparse()实现满矩阵到稀疏矩阵的转换。
      Ø  在MATLAB中用函数full()实现稀疏矩阵到满矩阵的转换。
      Ø  在MATLAB中,还可以用函数sparse()直接创建稀疏矩阵,其具体用法如下。
               S = sparse(i,j,s,m,n),其中,i和j分别是稀疏矩阵非零元素的行和列下标,s为相应的非零元素的值,m和n分别是矩阵的行数和列数。
      Ø  MATLAB还提供一些函数用于创建特殊稀疏矩阵,这些函数如下表所示。
         speye(n)创建单位稀疏矩阵
         spones(S)将稀疏矩阵的非0元素的值改为1
           sprand(S)或sprand(m,n,density)将稀疏矩阵S的非0元素的值改为均匀分布的随机数或创建mXn的随机稀疏矩阵
           sprandn(S)或sprandn(m,n,density)将稀疏矩阵S的非0元素的值改为高斯分布的随机数

    2、查看稀疏矩阵

    MATLAB提供一些函数用于查看稀疏矩阵的信息,如下表所示:

      Ø nnz(X)返回非零值个数
      Ø nonzeros(A)返回非0值
      Ø nzmax(S)返回用于存储非零值的空间长度

    [matlab自带的稀疏矩阵矩阵west0479:导入load west0479 可以用spy(west0479)图形化显示稀疏矩阵非零值分布

    3、稀疏矩阵的运算规则

    在MATLAB中的各种命令和函数都可以用于稀疏矩阵的运算,并且遵循如下的一些约定。

      Ø 把矩阵变为标量或者定长向量的函数总是给出满矩阵;
      Ø 对于标量或者定长向量变换到矩阵的函 数,如函数zeros()、ones()、eye()、rand()等总是给出满矩阵;
      Ø 从矩阵到矩阵的变换函数将以原矩阵的形式出现;
      Ø 在参与矩阵扩展的子矩阵(如[ A B;C D])中,只要有一个是稀疏矩阵,那么所得的结果也是稀疏矩阵;
      Ø 在矩阵引用中,将仍以原矩阵形式给出结果。
     

      

      

     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    centos go语言 开启代理 国内镜像
    Docker给MongoDB设置用户密码
    ubuntu镜像一般apt-get源地址都是在国外导致在构建时因为源地址问题导致下载速度极其得慢
    在centos7安装nodejs并升级nodejs到最新版本
    使用express创建简单web服务器
    关于docker的mongo镜像的部署
    Python:函数定义
    Python:if-while-for
    Python:运算符
    Python:标准数据类型6种
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/3668132.html
Copyright © 2011-2022 走看看