Matlab实验报告(二)矩阵和数组操作

时间:2020-09-24 08:43:22 手机站 来源:网友投稿

实验目的

1?掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。

?学习矩阵和数组的加减运算与乘法。

3?掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。

预备知识

1?常用的产生特殊矩阵的函数

?eye(m, n) 单位阵

?rand ( m,n) 随机矩阵

?randn( m, n) 正态分布的随机矩阵

?zeros(m, n) 零矩阵

?On es(m, n) 全部元素都为1的矩阵

?ComPan(A) 矩阵A的伴随矩阵

?bankel(m,n) n 维 Hankel 矩阵

?invhilb(n) n 维逆 HiIbert 矩阵

?magic(n) n 维 MagiC 矩阵

?toeplitz(m, n) Toeplitz 矩阵

?Wilki nso n(n) n 维Wilk in son特征值测试矩阵

?handamard(n) n 维 Handamard矩阵

?hilb(n) n 维 HiIbert 矩阵

?kro n(A,B) Kron ecker 张量积

?PaSCal(n) n 维 PaSCaI 矩阵

?Vander(A) 由矩阵 A 产生 Vandermonde 矩阵

?通过矩阵的结构变换,获得新矩阵

表2矩阵结构变化产生新矩阵

L=tril(A)

L主对角线及以下兀素取矩阵 A的兀素,其余为0

L=tril(A,k)

L及第k条对角线及以下兀素取矩阵 A的兀素,其余为

0

U=triu(A)

U主对角线及以上的兀素取矩阵 A的兀素,其余为0

53

5

3

U=triu(A,k)

U第k条对角线及以上的兀素取矩阵 A的兀素,其余为

0

B=rot90(A)

矩阵A逆时针旋转90°得到B

B=rot90(A,k)

矩阵A逆时针旋转k*90 °得到B

B=fliplr(A)

矩阵A左右翻转得到B

B=flipud(A)

矩阵A上下翻转得到B

B=reshape(A,m,

n)

将矩阵A的兀素重新排列,得到 m*n的新矩阵(m*n

就等于A的行列式之积。若 A为3*4 ,则m n可为2, 6

或4, 3等

?数组(矩阵)操作

对数组或矩阵的基本操作有插入、重新排列、提取、按列拉长、置空(去掉某行或某列)

置零、用单信下标操作一个矩阵,用逻辑数组操作一个矩阵、按指定条件求子数组,求数组的 规模等,下面一一举例说明(对数组和矩阵不加区别) 。

X=4:6 x=4 5 6

插入 通过对X进行插入运算创建矩阵 A

A=[x-3;x;x+3] A=1 2 3

5 6

7 8 9

重新排列 以逆序重排A的各行形成矩阵B

B=A(3:-1:1,1:3) B=7 8 9

TOC \o "1-5" \h \z 5 6

2 3

提取 提取A的前两行的后两列形成矩阵 C

C=A(1:2,2:3) C=2 3

6

按列拉长 对C按列拉长形成矩阵 D

D=C(:) D=2

6

6

⑤置空删除

⑤置空

删除 B 的第 2 列

B(:,2)=[] B=7 9

4 6

3

置零 将矩阵B的第2行第2列的元素置为1

B[2,2]=0 B=7 9 4 0

1 3

用单个下标操作一个矩阵

MATLAB寸矩阵中的元素赋予一个序号,序号值按列从第 1列第1行到第1列第2行到第2

列第 1 行到第 2 列第 2 行,直至最后一列最后一行的顺序计数。

B(3) ans=1

B(5) ans=0

B(2:4) ans=4 1 9

用逻辑数组操作一个矩阵

x=-4:4 x=-4 - 3 - 2 - 1 0 1 2 3 4

%判断数组中的元素的绝寸值大于 3的情况,绝寸值大于 3的元素置为 1,否则为 0。

abs(x)>3 ans=1 0 0 0 0 0 0 0 1

寸矩阵可进行同样操作:

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

4 5 6

7 8 9

abs(A)>3 ans=0 0 0

1 1 1

1 1 1

按指定条件求子数组 首先由条件表达式生成一个逻辑数组,然后使用系统提供的函数即可,函数在已知数组中

按逻辑数组的元素值查找所需的元素下标。

a=abs(x)>2 a=1 1 0 0 0 0 0 1 1

b=fin d(a) b=1 2 8 9

y=x(b) y=-4 - 3 3 4

函数find也可用于矩阵。

A=[1:3;4:6;7:9] A=I 2 3

4 5 6

7 8 9

B=A>4 B=O 0 0

0 1 1

1 1 1

TOC \o "1-5" \h \z [r,s]=fi nd(B) r=3 s=1

2

2

3

3

三、实验内容与步骤

用三种方法创建一个 3× 3矩阵,然后利用矩阵编辑器, 将其扩充为4× 5矩阵,并保存,

试着调用它。

⑴直接输入法

TOC \o "1-5" \h \z 女口在命令区输入 A=[3,2,1;4,5,6;7,8,9] 。

? ?[33‰1?Bj6;LeJffJ

A =

2 1

5 6

7 8 9

⑵ 直接利用MATLABl供的函数创建一个 3× 3矩阵

如在命令区输入rand(3,3)即得到一个3× 3的随机矩阵。

>> rand (3, 3)

ans -

O. Sl?7 O.Θ134 0.2785

Oi 905E 0. 6324 0.5469

0. 1270 0. 0975 0.9575

⑶利用MATLAB^供的“ MatriX Editor ”完成输入

步骤1在命令区输入A=1。

步骤2用鼠标单击工具栏的工作区浏览器, MATLA眸出变量浏览器,选中变量 A,鼠标左

键双击A,打开矩阵编辑器。

步骤3在左下脚的两个文本框中分别输入希望得到的矩阵的行数和列数: 3行3列,即得

到一个3 × 3矩阵。

步骤4要将上面矩阵改为一个 4× 5矩阵,只需改变矩阵的行数和列数即可。如将 3行3

列改为4行5列,即可得到一个 4×5矩阵。若想修改其中的元素,只需用鼠标选中表格中我们 想要修改的元素,将原来的元素修改为我需要的值。

步骤5要命令区输入SaVe data A(data为我们给变量文件起的名称,系统会自动沿设定好

的路径以“ .mat ”格式存储文件),即可保存上面例子中创建的矩阵 AO

步骤6在命令区输入load data即可把保存在文件中的矩阵读到 MATLA啲工作区的内存中

来。

? IDad data

? A

FH 3χ3 double

1

2

3

1

1

2

3

A =

1 2 3

4 5 6

7 6 9

2

4

5

&

3

4

7

3

g

5

6

建立一个等差数列,然后由它产生一个对角阵。

步骤1在命令区输入a=li nspace(0,1.5,5) 产生一个等差数列。

>> ^=Iinspace (OJ 1. 5, S)

a =

0 0, 3750 0.7500 I. 1250 I- 5000

步骤2在命令区输入B=diag(a)产生一个对角阵。

>> B=diac CB)

B =

0

0

0

0

0

0 0. 3750

0

0

0

0

0

0.7500

0

0

0

0

0

1.1250

0

0

0

0

0

L 5000

3.利用MATLAB勺函数

inv(A)

求方阵A的逆矩阵。

步骤1在命令区输入A=[1,2;5,6]得到一个2× 2的方阵。

? A=[lf2ι5,β]

1

5

2

6

步骤2再输入

B=inv(A)求出A的逆矩阵。

? E≈inv(A)

B =

0. 5000-O- 2500

0. 5000

-O- 2500

L 2500

四、练习

创建一个5×5矩阵,提取主对角线以上的部分。

17

24

1

8

15

23

5

Ii

Ie

?|

6

13

20

22

10

12

Ig

2L

3

11

JS

25

2

9

A=rand(3) , B=magic(3) , C=rand(3,4),计算 A× B×C

? A=rand¢3) JB=IiIagic (3) JC=Iand(3j 4)j A+E+C

3ΠΞ 二

5. 719711609. 530913. 3871

5. 7197

1160

9. 5309

13. 3871

4.3512

18.5343

11.2443

3.3637

15.9527

L 王 1451

4.2469

18. 3647

创建一个3×3矩阵,并求其转置,逆矩阵。

>> A= Tlanti ¢4 )

A =

O- 1386

O-

2543

O-

3500

O_

4733

O- 1493

O-

S 1 43

O”

1 9S6

O”

35 1 T

O. 2S7S

0.

2435

0.

2S1 1

0.

8308

6 3407

0.

9293

0.

6 1 60

0-

5S53

>> B= ZLrW■ CA) J

C=AJ

B =

-2- 7762

—1 .

2072

O-

9D6O

1 -

5565

—O. 4764

1 -

593?

—O.

3304

-O-

1 032

4- 9898

-O-

9368

—2 -

5293

CL

1183

-O* 5079

O-

1 902

1*

756 1

-O.

48V9

C =

O*13SG

O-

1 493

O. 2575

O- 840T

6 2543

0,

3143

0. 243S

0. 9293

O, 3500

0-

1 S66

O. 251 1

O- 6 1 €0

O- 4733

O-

35 I T

O-8308

O- 5853

用两种方法求Ax=b的解(A为4阶随机矩阵,b为4阶列向量)。

>>

A= it and C 4 ) JF

B= [ 1 ;Ξ ; 3

f:4]j κ=bXA

A

O-

5497

O.T53T

O

.0540

O-

1 299

O,

9172

Q.3804

O

.5308

S6S8

0.

2S5S

O- 56TS

O

* T7&2

0.

4694

0,

75T2

O, 0759

O

? 9340

0.

0119

B

1

2

ZSC =

O-

1 374

α.

1884

O-

0 135

O.

0325

0.

2293

6

095 1

6

1 327

0.

1 422

0,

07 15

O-

I 420

O-

1 94S

0*

1173

O-

1 893

O.

0 190

O.

2335

O.

0030

创建一个4阶随机矩阵A,计算A3。

> > a= r ?rtd

a =

O- 8253

0.4427

0.7749

0.3998

6 5333

O-1067

O- Sl 73

O-25θ9

O- 996 L

0. 96 19

0.8637

O.SOOl

6 0782

O.Oo46

O.OS44

0. >4314

>> a^3

3, S465

2. 5359

3. 8724

2. S91 4

2_ 9723

1.896 L

3. 0理23

2.22S2

5- 1207

3, 4490

5.0?33

3. &θ?0

O. 4 122

0.2633

0.4154

0. 3674

五、实验分析

矩阵和数组操作实验比较麻烦,容易搞混,尤其是它的各种运算

六、实验总结

矩阵和数组是比较相似,容易搞混的两个概念,特别是它的一些运算,但矩阵和数组操作 是非常有用的在 MATLA時,它们可以直接解决一些简单的问题。

推荐访问:实验报告 数组 矩阵 实验 Matlab实验报告(二)矩阵和数组操作

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。