matlab矩阵数组简单程序,Matlab矩阵和数组

1.      数组和矩阵

数组:用空格或者逗号间隔数组元素,用方括号括起来

构造数组的方法:增量法和linspace函数法

增量法:>> b=10:2:15

b =

10    12    14

>> a=10:15

a =

10   11    12    13   14    15

>> b=3.3:5.5

b =

3.3000   4.3000    5.3000

>> 9:-1:1

ans =

9     8    7     6     5    4     3     2    1

Linspace:x=linspace(first,last,num)   first,last首位元素,num是个数(输出几个数)

>> x=linspace(1,9,9)

x =

1     2     3    4     5     6    7     8     9

>> x=linspace(1,9,2)

x =

1     9

矩阵:Matlab中,二维数组称为矩阵。

创建矩阵最简单的方法是用[ ] ,在方括号内输入多个元素可以创建矩阵的一个行,并用逗号或者空格把每个元素间隔开:

>> row=[1 3 5 7 9]

row =

1    3     5     7    9

>> row=[1,3,5,7,9]

row =

1    3     5     7    9

如果想开始一个新行,则用分号终止当前行:

>> A=[1 2 3;4 5 6;7 8 9]

A =

1     2     3

4     5     6

7     8     9

构造特殊矩阵:

构造特殊矩阵用函数来实现:

特殊矩阵构造函数如下表所示:

函数

功能

ones

创建一个所有元素都为1的矩阵

zero

创建一个所有元素都为0的矩阵

eye

创建对角线元素为1,其他元素为0的矩阵

accumarray

将输入矩阵的元素分配到输出矩阵中的指定位置

diag

根据矢量创建对角矩阵

magic

创建一个方形矩阵,其中行、列和对角线上元素的和相等

rand

创建一个矩阵或者数组,其中的元素为服从均匀分部的随机数

randn

创建一个矩阵或数组,其中的元素为服从正态分布的随机数

randperm

创建一个矢量(1*n的矩阵)

A=zero(4,6,’uint32’)

A=magic(5)

A=rand(5)*20

A=[1 23 4 5 6 7 ];

B=diag(A,0)%  A中的元素为对角线

3、聚合矩阵

聚合矩阵是通过连接一个或多个矩阵来形成新的矩阵。表达式C=[A,B]在水平方向上聚合矩阵A和B,表达式C=[A;B]将在垂向上聚合他们。

A =

1    1     1     1    1

1    1     1     1    1

B =

0.9501   0.4860    0.4565    0.4447   0.9218

0.2311   0.8913    0.0185    0.6154   0.7382

0.60680.7621    0.8214    0.7919   0.1763

C=[A;B]

C =

1.0000    1.0000    1.0000   1.0000    1.0000

1.0000    1.0000    1.0000   1.0000    1.0000

0.9501    0.4860    0.4565   0.4447    0.9218

0.2311    0.8913    0.0185   0.6154    0.7382

0.6068    0.7621    0.8214   0.7919    0.1763

可以用聚合的方法创建矩阵甚至多维数组,但不能生成不规则的形状,只能是矩形。(此时要注意行数和列数是否匹配)

矩阵聚合函数

cat()沿指定的维数聚合矩阵

horzcat()水平聚合矩阵

vercat()垂向聚合矩阵

repmat()通过复制和叠置矩阵来创建新矩阵

blkdiag()用已有矩阵创建块对角矩阵

>> A=[8 1 6;3 5 7;4 9 2]

A =

81     6

35     7

49     2

>> B=repmat(A,2,4)

B =

81     6     81     6     81     6     81     6

35     7    35     7     35     7     35     7

49     2     49     2    49     2     49     2

81     6 81     6     81     6     81     6

35     7    35     7     35     7     35     7

49     2     49     2     49     2     49     2

>> A=magic(3);

>> B=[-5 -6 -9;-4 -4 -2];

>> C=eye(2)*8;

>> D=blkdiag(A,B,C)

>> D =

81     6     0    0     0     0    0

35     7    0    0     0     0    0

49     2     0    0     0     0    0

0     0    0    -5-6    -9      0     0

0     0    0    -4-4   -2    0     0

0     0    0     0     0    0     80

0     0    0     0     0    0     08

4、组合不同类型的数据

构造矩阵时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。

用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度的。例如,聚合double型和single型的矩阵。MATLAB会将double型元素转换为single型。

1)single型和double型矩阵聚合----------single型

2)integer型和double型矩阵聚合---------int8型

3)字符型和double型聚合----------------字符型

4)逻辑型和double型聚合--------------double型

例子:

>>x=[true false false pi sqrt(7)]

x =

1.0000         0         0   3.1416    2.6458

>>class(x)

ans =

double

5获取矩阵的元素

利用编号和索引,可以获取MATLAB矩阵的元素:

>> A=magic(4)

A =

16    2     3    13

5   11    10     8

9    7     6    12

4   14    15    1

>> A(4,2)

ans =

14

给出一个矩阵:

>> A=[2 6 9;4 2 8;3 0 1]

A =

2    6     9

4    2     8

3    0     1

在内存中是按下面的序列保存的:

2,4,3,6,2,0,9,8,1

矩阵A的第3行第2列元素可以看做实际保存序列中的第6个元素,要获取这个元素,可以使用标准语法A(3,2)和A(6).在使用线性索引方式时,如果矩阵大小为[d1,d2]即d1行d2列,则位置(i,j)处的元素在保存序列中的位置为:

(j-1)d1+i

举例:

>>linearindex=sub2ind(size(A),3,2)

linearindex =

6

>> [rowcol]=ind2sub(size(A),6)

row =

3

col =

2

冒号运算符

A =

2    6     9

4    2     8

3    0     1

>> A(1:2:end)=-10

A =

-10     6    -10

4    -10    8

-10    0    -10

6、获取与矩阵有关的信息

length( )  返回最长维的长度

ndims( ) 返回维数

numel ( )返回元素个数

size()返回每一维的长度

求平均值用numel()函数实现

>> A=rand(5)*10;

A(4:5,:)=[]

A =

1.9343   6.9790    4.9655    6.6023   7.2711

6.8222   3.7837    8.9977    3.4197   3.0929

3.0276   8.6001    8.2163    2.8973   8.3850

sum(A(:))/numel(A)

ans =

5.6663

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值