文档库 最新最全的文档下载
当前位置:文档库 › Matlab二维数组及其应用

Matlab二维数组及其应用

Matlab二维数组及其应用
Matlab二维数组及其应用

Matlab:二维数组及其应用

二维数组实际上也是一个矩阵。应此直接创建一个矩阵就行。创建的方法你应该会吧,就是直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内。

比如,创建一个3×5的矩阵(对应3×5的二维数组)

A = [12 62 93 -8 22; 16 2 87 43 91; -4 17 -72 95 6]

A =

12 62 93 -8 22

16 2 87 43 91

-4 17 -72 95 6

当然也可以用专门用来创建多维数组的cat函数来创建。

具体如下:

函数cat

格式A=cat(n,A1,A2,…,Am)

说明n=1和n=2时分别构造[A1;A2]和[A1,A2],都是二维数组,而n=3时可以构造出三维数组。

例如:

>> A1=[1,2,3;4,5,6;7,8,9];A2=A1';

>> A3=cat(2,A1,A2)

A3 =

1 2 3 1 4 7

4 5 6 2 5 8

7 8 9 3 6 9

这样A3就是一个二维数组

此外还有诸如特殊矩阵的创建方法等这里就不列举了你可以百度或者Google一下

二维数组的变换我还不太确定你的意思:

这里就提供几个矩阵的操作:

1.矩阵的变维

矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。

(1)“:”变维

例1-48

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

A =

1 2 3 4 5 6

6 7 8 9 0 1

>> B=ones(3,4)

B =

1 1 1 1

1 1 1 1

1 1 1 1

>> B(:)=A(:)

B =

1 7 4 0

6 3 9 6

2 8 5 1

(2)Reshape函数变维

格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵B

B = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×…

B = reshape(A,*m n p…+) %同上

B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数相同。

矩阵变维例子:

>> a=[1:12];

>> b=reshape(a,2,6)

b =

1 3 5 7 9 11

2 4 6 8 10 12

2.矩阵的变向

(1)矩阵旋转

函数

格式 B = rot90 (A) %将矩阵A逆时针方向旋转90°

B = rot90 (A,k) %将矩阵A逆时针方向旋转(k×90°),k可取正负整数。

例如:

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

A =

1 2 3

4 5 6

7 8 9

>> Y1=rot90(A),Y2=rot90(A,-1)

Y1 = %逆时针方向旋转

3 6 9

2 5 8

1 4 7

Y2 = %顺时针方向旋转

7 4 1

8 5 2

9 6 3

(2)矩阵的左右翻转

函数fliplr

格式 B = fliplr(A) %将矩阵A左右翻转

(3)矩阵的上下翻转

函数flipud

格式 B = flipud(A) %将矩阵A上下翻转

例如:

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

A =

1 2 3

4 5 6

>> B1=fliplr(A),B2=flipud(A)

B1 =

3 2 1

6 5 4

B2 =

4 5 6

1 2 3

(4)按指定维数翻转矩阵

函数flipdim

格式 B = flipdim(A,dim) % flipdim(A,1) = flipud(A),并且flipdim(A,2)=fliplr(A)。

例如

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

A =

1 2 3

4 5 6

>> B1=flipdim(A,1),B2=flipdim(A,2)

B1 =

4 5 6

1 2 3

B2 =

3 2 1

6 5 4

(5)复制和平铺矩阵

函数repmat

格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。

B = repmat(A,[m n]) %与上面一致

B = repmat(A,*m n p…+) %B由m×n×p×…个A块平铺而成

repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。例如

>> A=[1 2;5 6]

A =

1 2

5 6

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

B =

1 2 1 2 1 2 1 2

5 6 5 6 5 6 5 6

1 2 1 2 1 2 1 2

5 6 5 6 5 6 5 6

1 2 1 2 1 2 1 2

5 6 5 6 5 6 5 6

3.矩阵元素的数据变换

对于小数构成的矩阵A来说,如果我们想对它取整数,有以下几种方法:(1)按-∞方向取整

函数floor

格式floor(A) %将A中元素按-∞方向取整,即取不足整数。

(2)按+∞方向取整

函数ceil

格式ceil(A) %将A中元素按+∞方向取整,即取过剩整数。

(3)四舍五入取整

函数round

格式round (A) %将A中元素按最近的整数取整,即四舍五入取整。(4)按离0近的方向取整

函数fix

格式fix (A) %将A中元素按离0近的方向取整

例如:

>> A=-1.5+4*rand(3)

A =

2.3005 0.4439 0.3259

-0.5754 2.0652 -1.4260

0.9274 1.5484 1.7856

>> B1=floor(A),B2=ceil(A),B3=round(A),B4=fix(A)

B1 =

2 0 0

-1 2 -2

0 1 1

B2 =

3 1 1

0 3 -1

1 2 2

B3 =

2 0 0

-1 2 -1

1 2 2

B4 =

2 0 0

0 2 -1

0 1 1

(5)矩阵的有理数形式

函数rat

格式[n,d]=rat (A) %将A表示为两个整数矩阵相除,即A=n./d。

例如:对于上例中的A

>> [n,d]=rat(A)

n =

444 95 131

-225 2059 -472

166 48 1491

d =

193 214 402

391 997 331

179 31 835

(6)矩阵元素的余数

函数rem

格式 C = rem (A, x) %表示A矩阵除以模数x后的余数。若x=0,则定义rem(A, 0)=NaN,若x≠0,则整数部分由fix(A./x)表示,余数C=A-x.*fix (A./x)。允许模x为小数。

相关文档