MATLAB入门(二)

8.矩阵及运算

1.   数组

    MATLAB的运算事实上是以数组 (array) 及矩阵 (matrix) 方式在做运算。

建立一个数组时,如果是要个别键入元素,须用中括号[ ] 将元素置于其中。数组为一维元素所构成,而矩阵为多维元素所组成,例如

» x=[1 2 3 4 5 6 7 8] ;% 一维 1x8 阵列

» x = [1 2 3 4 5 6 7 8; 4 5 6 7 8 9 10 11] ; % 二维 2x8 矩阵,以;区隔各列的元素

» x = [1 2 3 4 5 6 7 8 % 二维 2x8 矩阵,各列的元素分二行键入

4 5 6 7 8 9 10 11] ;

» x(3)% x的第三个元素

ans =

     2

» x([1 2 5])% x的第一、二、五个元素

ans =

     1     4     3

x(1:5)% x的第前五个元素

ans =

     1     4     2     5     3

» x(10:end)% x的第十个元素后的元素

ans =

     8     6     9     7    10     8    11

» x(10:-1:2)% x的第十个元素和第二个元素的倒排

ans =

     8     5     7     4     6     3     5     2     4

» x(find(x>5))% x中大于5的元素

ans =

     6

     7

     8

     6

     9

    7

    10

     8

    11

» x(4)=100%给x的第四个元素重新给值

x =

     1     2     3     4     5     6     7     8

     4   100     6     7    8     9    10    11

» x(3)=[]% 删除第三个元素

x =

 Columns 1 through 12

     1     4   100     3     6     4     7     5     8     6     9     7

 Columns 13 through 15

    10     8    11

» x(16)=1% 加入第十六个元素

x =

 Columns 1 through 12

     1     4   100     3     6     4     7     5     8     6     9     7

 Columns 13 through 16

    10     8    11     1

2  建立数组

上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式:

» x=(0:0.02:1); % 以:起始值=0、增量值=0.0.2、终止值=1的矩阵

» x=linspace(0,1,100); % 利用linspace,以区隔起始值=0终止值=1之间的元素数目=100

»a=[]%空矩阵

a =

     []

» zeros(2,2)%全为0的矩阵

ans =

     0     0

0                  0

    » ones(3,3) %全为1的矩阵

ans =

     1     1     1

     1     1     1

1     1     1

» rand(2,4);随机矩阵

»a=1:7, b=1:0.2:5;%更直接的方式

»c=[b a]; %可利用先前建立的阵列 a 及阵列 b ,组成新阵列

» a=1:1:10;

» b=0.1:0.1:1;

» a+b*I%复数阵列

ans =

 Columns 1 through 4

   1.0000 + 0.1000i   2.0000 + 0.2000i   3.0000 + 0.3000i   4.0000 + 0.4000i

 Columns 5 through 8

   5.0000 + 0.5000i   6.0000 + 0.6000i   7.0000 + 0.7000i   8.0000 + 0.8000i

 Columns 9 through 10

   9.0000 + 0.9000i 10.0000 + 1.0000i

在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented)的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址

   3   子矩阵

通过一个矩阵产生另一个矩阵的方法(上面已经有例子)

假如一个矩阵A

    则 A(m1:m2 ,n1:n2)为由A的第m1到m2行,第n1列到n2列组成的子矩阵。

 

 

9.矩阵的运算

         经典的算术运算符见下表:

经 典 的 算 术 运 算 符

 

 

运 算 符

MATLAB表达式

+

a+b

-

a-b

*

a*b

 

/ 或 "

a/b或a"b

 

^

a^b

 

 

 

 

 

前面我们已经把经典的算术运算符告诉大家了,在这里同样也可以使用。

» a=1:1:10;

» b=0:10:90;

» a+b

ans =

1    12    23    34    45    56    67    78    89   100

» a-b

ans =

1    -8   -17   -26   -35   -44   -53   -62   -71   -80

    » a.*b%注意这里a后加了个“.”

ans =

     0    20    60   120   200   300   420   560   720   900

» a/b

ans =

0.       1158

   » a"b

ans =

     0     0     0     0     0     0     0     0     0     0

     0     0     0     0     0     0     0     0     0     0

     0     0     0     0     0     0     0     0     0     0

     0     0     0     0     0     0     0     0     0     0

     0     0     0     0    0     0     0     0     0     0

     0     0     0     0     0     0     0     0     0     0

     0     0     0     0     0     0     0     0     0     0

     0     0     0     0     0     0     0     0     0     0

     0     0     0     0     0     0     0     0     0     0

0     1     2     3     4     5     6     7     8     9

   » b./a

ans =

 Columns 1 through 7

         0    5.0000    6.6667    7.5000    8.0000    8.3333    8.5714

 Columns 8 through 10

8.7500    8.8889    9.0000

» a."b

ans =

 Columns 1 through 7

         0    5.0000    6.6667    7.5000    8.0000    8.3333    8.5714

 Columns 8 through 10

    8.7500    8.8889    9.0000

» a.^2

ans =

     1     4     9    16    25    36    49    64    81   100

说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。

       矩阵转置运算

通过在矩阵变量后加的方法来表示转置运算

?a=1:1:10;

?b=0:10:90;

?a'

ans =

     1

     2

     3

     4

     5

     6

     7

     8

     9

10

?c=a+b*i;

?c'

ans =

   1.0000         

   2.0000 -10.0000i

   3.0000 -20.0000i

   4.0000 -30.0000i

  5.0000 -40.0000i

   6.0000 -50.0000i

   7.0000 -60.0000i

   8.0000 -70.0000i

   9.0000 -80.0000i

 10.0000 -90.0000i

 

 

 

posted @ 2008-08-21 06:22  Bobyguo  阅读(807)  评论(0)    收藏  举报