matlab矩阵和数组的操作汇总

  1. X=a:h:b      %a为起点,h为步长的行向量

2.Y=linspace(a,b,m)   %a为起点,b为终点的m个数组成的等距向量。

  1.  x=logspace(a,b,n)

>> logspace(1,2,5)

 

ans =

 

   10.0000   17.7828   31.6228   56.2341  100.0000

 

>> log10(ans)

 

ans =

 

1.0000    1.2500    1.5000    1.7500    2.0000

  1. A=ones(m,n)    %m´n的全1数组

          A1=zeros(m,n)  %m´n的全0数组

          A2=eye(m,n)        %m´n的单位矩阵

          B1=rand(m,n)  %m´n的随机数数组,其中个元素服从[0,1]上的平均分布

          B2=randn(m,n)    %m´n 标准正态分布随机数组

      

例: 生成5阶随机数矩阵,其中的随机数服从参数为20,2*2 的正态分布。

>> A=2*randn(5)+20

A =

   21.0753   17.3846   17.3002   19.5901   21.3430

   23.6678   19.1328   26.0698   19.7517   17.5850

   15.4823   20.6852   21.4508   22.9794   21.4345

   21.7243   27.1568   19.8739   22.8181   23.2605

   20.6375   25.5389   21.4295   22.8344   20.9778

 

>> A=2*randn(5)+20

A =

   22.0694   21.7768   22.8768   19.7955   19.9399

 

   21.4538   17.7059   20.6504   19.5171   19.6702

   19.3931   17.8623   18.4901   20.6384   21.2554

   20.5877   18.3810   22.7406   20.6257   22.1865

   18.4254   14.1114   16.5770   18.2702   22.2185

5.生成对角形矩阵的diag语句

函数diag(x)的用法:

(1)若x是向量,则diag(x) 返回以x为对角元素的对角阵, diag(x,1) 是以x为次对角元素的次对角矩阵,依此类推。

(2)若X是矩阵(可以不是正方矩阵),则 diag(X)是X的对角元素组成的向量,diag(X,1) 是X的次对角元素组成的向量,以此类推。

 

例1.4:输入100阶5对角矩阵

 

 

 

 

            

参考程序:

x=4*ones(100,1);y=2*ones(99,1);z=ones(98,1);

A=diag(x)+diag(y,1)+diag(y,-1)+diag(z,2)+diag(z,-2);

6.1.3 数组的操作

1.3.1 子数组

类似于矩阵代数中子矩阵的定义,matlab中数组A的子数组由A的若干个行、列的交叉点上的元素组成。

一般,设U表示行的数组,V表示列的数组,则子数组表示为A(U,V)

当U (V)是全部的行(列)时,可以用冒号代替。如

>> A([2,3],:)

ans =

     2     3     4     5     6     7

     3     4     5     6     7     8

在由数组A的第2,4行,第2,4,6列交叉点处元素形成的子数组如图 1.6所示。子数组的matlab描述为 A([2,4],[2,4,6])                

7.数组的拼接与剪切

>> a=[1,2,3,4;2,3,4,5];

>> b=[3,4;4,5;5,6];

>> c=[5,6;6,7;7,8];

>> d=[5,6;6,7;7,8;8,9;9,10];

>> A=[[a;[b,c]],d]  ;号代表拼接到下一行(上下相接)  ,代表左右相接

A =

     1     2     3     4     5     6

     2     3     4     5     6     7

     3     4     5     6     7     8

     4     5     6     7     8     9

     5     6     7     8     9    10

8.没有元素的数组[ ]称为空数组。给矩阵A的若干个行(列)赋值空数组相当于剪切掉这些行(列)。例如,对上面的数组A作下面操作:

>> A(:,[2,4])=[ ]

A =

     1     3     5     6

     2     4     6     7

     3     5     7     8

     4     6     8     9

     5     7     9    10

9.集合(元胞数组)

在matlab中,变量可以存放一个数组,也可以存放以数组为元素的集合。集合以花括号限定,元素之间用逗号分隔。

例: 观察下面语句的运行结果

>> A={[1 2;3,4],‘This is a book’,1:5};

>> A{2}

ans =

This is a book

>> A{1}+5

ans =

     6     7

     8     9

>> length(A)

ans =

     3

 

10.B=repmat(A,m,n);           %把A作元素铺成m´n大数组

C=reshape(A,m,n);          %在总元素个数不变的前提下,改变数组的行列数。

D=rot90(A, k);                 %数组逆时针旋转k个90度

E=flipud(A);                    %数组上下翻转

F=fliplr(A);                     %数组左右翻转

  1. 矩阵运算

F=A+B  F=A-B   F=A*B   F=A\B    F=B/A    F=A^m

除法是乘法的逆运算。

            Ax=B®x=A\B

注:运算的逆是解方程!

  1. 数组运算

数组运算的运算符是算术运算符前加点,故又称点运算

点运算有:

       .*    ./    .\     .^

数组的加减法和矩阵的加减法一致,不用加点。

注:在MATLAB中,函数作数值运算要用点运算。

13.逻辑运算

matlab定义以下逻辑运算

 ~                   非

&                   与

|                    或

        xor                  异或

逻辑运算也是数组运算。

例 输入一个矩阵,求其中被3整除的正数及其位置

>> A=[-1 5 9 -3 7;

             6 -2 5 15 8; 

            -6 7 21 -7 -12];

>> B=A>=0&mod(A,3)==0  返回为逻辑值0-1

B =

     0     0     1     0     0

     1     0     0     1     0

     0     0     1     0     0

>> B.*A

ans =

     0     0     9     0     0

     6     0     0    15     0

     0     0    21     0     0

 

(先进行逻辑判断再进行复原可行元素)

14.参考程序:

x=0:0.1:4;

flag1=x<=1;

flag2=x>1;

f=flag1.*x.^2+flag2.*sqrt(x);

plot(x, f) 

15.Matlab中的find函数提供了一个简便的下标操作方法。find函数的调用格式为

                     find(g(A))

其中 g是矩阵A的关系或逻辑表达式。find 函数则返回满足这一条件的元素的一维下标集合。

例 将矩阵A中大于0.5的元素换成0.5。

>> A=rand(5)

A =

    0.8147    0.0975    0.1576     0.1419    0.6557

    0.9058    0.2785    0.9706    0.4218    0.0357

    0.1270    0.5469    0.9572    0.9157    0.8491

    0.9134    0.9575    0.4854    0.7922    0.9340

    0.6324    0.9649    0.8003    0.9595    0.6787

>> U=find(A>0.5);%返回A的符合条件的位置

>> A(U)=0.5

A =

 

    0.5000    0.0975    0.1576    0.1419    0.5000

    0.5000    0.2785    0.5000    0.4218    0.0357

    0.1270    0.5000    0.5000    0.5000    0.5000

    0.5000    0.5000    0.4854    0.5000    0.5000

0.5000    0.5000    0.5000    0.5000    0.5000

16.Matlab的函数:  矩阵函数,  数组函数

matlab矩阵函数

最常使用的矩阵函数包括行列式函数det、矩阵求逆函数inv和求特征值和特征向量的函数eig。调用格式为

          det(A)                            %返回矩阵A的行列式的值

          inv(A)                            %返回矩阵A的逆矩阵

          E= eig(A)              %返回由矩阵A的全部特征值为元素的向量

          [E,R]=eig(A)                 %返回特征向量和特征值 

 

17.数组函数

初等数学函数都是数组函数。

数组函数作用于数组的每个分量。例如,sin(A)相当于对数组A的每个分量求正弦。

常用的数组函数:

           sin(A)       cos(A)       tan(A)      cot(A)

           exp(A)      log(A)        log10(A)   sqrt(A)

           round(A)     floor(A)     ceil(A)    fix(A)

matlab矩阵和数组的操作汇总