数值数组

 

1.数值数组

数组(array)是matlab的基本数据结构。数组按照数据类型来分类,数组有若干个元素依次序组成,每个元素有唯一的下标。

m×n的矩阵即具有m行n列的矩阵

 

1.1创建数组

创建数值数组的基本方式:

方法1:

A=[1,2,3,4;2,3,4,1;3,4,1,2]

方法2:

A=[1 2 3 4

   2 3 4 1
   
   3 4 1 2]

结果:

 

 

 

1.2求数组大小

1.2.1数组大小

s=size(A)

结果:

 

 

前面一位代表行数,后面一位代表列数,即表示A为三行四列的矩阵

1.2.2数组长度

len=length(A)

结果:

 

 

 

TIPS

size(s)

 

 

表示s是一个一行二列的矩阵。

 

1.3访问数组元素

1.3.1 用A(i,j)表示数组的第i行,第j列的元素

1.3.2 用A([i1,i2,i3,...,ir],[j1,j2,j3,.....,js])表示由数组A的第i1,i2,...,ir行与j1,j2,...,js列交叉位置上的元素按照i1,i2....,ir和j1,j2,....,js 顺序构成子矩阵

例:

A([3,1][2,3,1]),即从A数组中的第三行按 2,3,1顺序排列元素,然后再从第一行按2,3,1顺序排列元素。

A([3,1],[4,1,2,3])

原矩阵:


A =

     1     2     3     4
     2     3     4     1
     3     4     1     2

修改后:

 

>> A([3,1],[4,1,2,3])

ans =

     2     3     4     1
     4     1     2     3

 

1.3.3 用A(k)表示数组A从首行狩猎元素开始逐列的数的第k个元素

例子:

 

 

 

A(1)=1, A(2)=2,A(3)=3, A(4)=2, A(5)=3, A(6)=4...............A(8)=4,......A(12)=2。

 

1.4修改数组元素

1.4.1直接代入矩阵数据

如:A=[1,3,4,2;2,3,5,1;1,6,4,2]

1.4.2修改数组中某一个元素的值

如:A(2,3)=1

Warning:若修改数组越界,即A(i,j)中i>m或j>n,则在超出的范围内填上0

 

冒号运算符

用法1:生成等差数列

j:k :生成从j到k的公差为1的等差数列,1行[k-j+1]列

>> 3:5

ans =

     3     4     5

>> 2:6

ans =

     2     3     4     5     6

 

j:i:k

首项为j,公差为i,j+ni<=k.

>> 2:2:8

ans =

     2     4     6     8

>> 2:2:7

ans =

     2     4     6

如j>k

>> 6:2

ans =

  1×0 empty double row vector

 

Note:冒号运算符优先级比加减法更低,j,i,k一般不需要括号括住

 

第二种用途:


A =

     1     2     3     4
     2     3     4     1
     3     4     1     2

(1)A(i,:)表示A的第i行

>> A(2,:)

ans =

     2     3     4     1

(2)A(:,j)表示A的第j列

>> A(:,3)

ans =

     3
     4
     1

(3)A([i1,i2,i3,i4,...,in],:)

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

ans =

     2     3     4     1
     3     4     1     2
     1     2     3     4

(4)列同理同上

(5)A(:)按照A的全部元素逐列排列而成形成列变量

>> A(:)

ans =

     1
     2
     3
     2
     3
     4
     3
     4
     1
     4
     1
     2

 

列:

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

A =

     1     2     3     4
     3     4     1     2
     2     3     4     1

 

>> A(2,:) = A(2,:) - 3*A(1,:)

A =

     1     2     3     4
     0    -2    -8   -10
     2     3     4     1

 

删除矩阵内某行或某列

 

A([1,2],:)=[]    /* 删除第1行与第2行*/

 

 

单位矩阵eye

用法1:eye(3)

>> eye(3)

ans =

     1     0     0
     0     1     0
     0     0     1

用法2:eye(3,5)

>> eye(3,5)

ans =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0

用法3:eye(size(A))

生成与A规模相同的单位矩阵(A矩阵为3行4列)

>> eye(size(A))

ans =

     1     0     0     0
     0     1     0     0
     0     0     1     0

 

zeros(2,3) ones(4,3) ones(size(A))

rand:生成0到1的一个随机数。

>> rand

ans =

    0.8147

 

 

linspace(a,b)         生成从a开始到b结束共100个元素的等差数列

相当于: a:(b-a)/99:b

linspace(a,b,n)      生成从a开始到b结束共n个元素的等差数列

相当于:a:(b-a)/(n-1):b

diag用法

(1)X=diag(v),X以向量v为主对角线的方阵,其余元素为0

>> diag([1,2,3])

ans =

     1     0     0
     0     2     0
     0     0     3

 (2)X=diag(v,k) X是以向量v为第k条对角线的方阵。从主对角先数起主对角线相当于k=0,k>0相当于位于主对角线上方,

 

>> diag([1,2,3],1)

ans =

     0     1     0     0
     0     0     2     0
     0     0     0     3
     0     0     0     0

>> diag([1,2,3],2)

ans =

     0     0     1     0     0
     0     0     0     2     0
     0     0     0     0     3
     0     0     0     0     0
     0     0     0     0     0

(3)v=diag(X)列向量v是矩阵X的主对角线

>> A

A =

     1     2     3     4
     0    -2    -8   -10
     2     3     4     1
>> diag(A)

ans =

     1
    -2
     4

(4)v=diag(X,k) v是矩阵X的第k条对角线(k为负数时,在主对角线的下方,正:主对角线上方)

>> diag(D,-2)

ans =

     7

>> diag(D,-1)

ans =

     4
     8

>> diag(D,0)

ans =

     1
     5
     9

 

创建坐标网格

meshgrid输入项x,y是横纵坐标向量;输出项X,Y是矩阵,规模相同,列数等于length(x),行数等于length(y)。X的行向量都是x,Y的列向量都是y。

命令:[X,Y]=meshgrid(x,y)

[X,Y]=meshgrid(x)              //相当于[X,Y]=meshgrid(x,x)

>> x=[1,2,3]

x =

     1     2     3

>> y=[1,2]

y =

     1     2

>> [X,Y]=meshgrid(x,y)

X =

     1     2     3
     1     2     3


Y =

     1     1     1
     2     2     2

 

矩阵合成

(1)C=[A,B] 将矩阵A和B水平合成为矩阵C        A,B必须行数相同

(2)C=[A;B] 讲矩阵A和B垂直合成为矩阵C        A,B必须列数相同

 

数据统计分析函数

 

MATLAB十一数组的形式保存并处理统计数据的。

max(A)

从A中找出每一列最大的元素

A =

     1     2     3     1
     2     3     4     1
     3     4     1     2
     4     1     2     3

>> C=max(A)

C =

     4     4     4     3

类似的还有:

min、sum、prod(乘积)、mean(平均值)、median(中位数)、range(极差)、var、()方差std标准差

(后面再补充)

 

数组运算

运算符说明
+对应元素间加法
-减法
.*乘法
./除法(左边除以右边)
.\左除法(左边除右边)
.^对应元素间的乘幂
.'转置,遇负数不取共轭

 

 

>> A=[1,2,3;4,5,6]

A =

     1     2     3
     4     5     6

>> B=[-1,-1,-1;2,2,2]

B =

    -1    -1    -1
     2     2     2

 

>> A+B

ans =

     0     1     2
     6     7     8

>> A-B

ans =

     2     3     4
     2     3     4

>> A.*B

ans =

    -1    -2    -3
     8    10    12

 

>> A./B

ans =

   -1.0000   -2.0000   -3.0000
    2.0000    2.5000    3.0000

>> A.\B

ans =

   -1.0000   -0.5000   -0.3333
    0.5000    0.4000    0.3333

>> A.^B               //以B内元素为次方

ans =

    1.0000    0.5000    0.3333
   16.0000   25.0000   36.0000


>> A.'         //转置

ans =

     1     4
     2     5
     3     6


>> 2.\A              //2除A==A除以2

ans =

    0.5000    1.0000    1.5000
    2.0000    2.5000    3.0000

>> A.^2

ans =

     1     4     9
    16    25    36

>> 2.^A             //以A内元素为次方

ans =

     2     4     8
    16    32    64

 

矩阵运算

运算符说明
+

与数组运算相同

-与数组运算相同
*矩阵乘法,可以复习一下线代
/矩阵右除,B/A,即B*A的转置
\矩阵左除,B\A,即B的转置*A
^仅限于方阵,A^2即A*A
'转置,遇复数取共轭,即复共轭转置

 

常用线代运算函数有

rref(行最简形),rank(秩),inv(逆矩阵),trace(迹),det(行列式),eig(特征值和特征向量),norm(范数),null(零空间基底),orth(像空间基底)等。

 

(后面补充)

例题:

 解法1:


A =

     1     2     2     1
     2     4     3     4

>> B=[3;6]

B =

     3
     6

>> null(A,'r')

ans =

    -2    -5
     1     0
     0     2
     0     1

>> A\B

ans =

         0
    1.5000
         0
    0.0000

 

解法2:

求增广矩阵[A,B]为行最简形:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值