第2章 MATLAB数值计算(2)

2019-08-31 19:40

zeros、ones、rand、randn和eye函数当只有一个参数n时,则为n×n的方阵; 当eye(m,n)函数的m和n参数不相等时则单位矩阵会出现全0行或列。 【例2.3】查看eye函数的功能。

X1=eye(2,3)

X1 =

1 0 0 0 1 0

X2=eye(3,2)

X2 =

1 0 0 1 0 0

4. 通过MAT数据文件加载矩阵

通过“load”命令或选择菜单“File”→“Import Data”命令加载MAT数据文件来创建矩阵。

5. 在M文件中创建矩阵

M文件实际上是一种包含MATLAB代码的文本文件; 通过在MATLAB命令窗口中运行M文件创建矩阵。

2.2.2矩阵元素和操作

矩阵和多维数组都是由多个元素组成的,每个元素通过下标来标识。

1. 矩阵的下标 (1) 全下标方式

矩阵中的元素可以用全下标方式标识,即由行下标和列下标表示,一个m×n的a矩阵的第i行第j列的元素表示为a(i,j)。

注意:

? 如果在提取矩阵元素值时,矩阵元素的下标行或列(i,j)大于矩阵的大小(m,n),则

MATLAB会提示出错;

? 而在给矩阵元素赋值时,如果行或列(i,j)超出矩阵的大小(m,n),则MATLAB自动

扩充矩阵,扩充部分以0填充。

a=[1 2;3 4;5 6]

a =

1 2 3 4 5 6

a(3,3) %提取a(3,3)的值

??? Index exceeds matrix dimensions.

a(3,3)=9 %给a(3,3) 赋值

a =

1 2 0 3 4 0 5 6 9

(2) 单下标方式

先把矩阵的所有列按先左后右的次序连接成“一维长列”,然后对元素位置进行编号。 以m×n的矩阵a为例,若元素a(i,j)则对应的“单下标”为s= (i-1)×m+j。

2. 子矩阵块的产生

子矩阵是从对应矩阵中取出一部分元素构成,用全下标和单下标方式取子矩阵。 (1) 用全下标方式

矩阵a为图2.2所示,则:

? 取行数为1、3,列数为2、3的元素构成子矩阵。

a([1 3],[2 3])

ans =

2 0 6 9

? 取行数为1~3,列数为2~3的元素构成子矩阵,“1:3”表示1、2、3行下标。

a(1:3,2:3)

ans =

2 0 4 0 6 9

? 取所有行数即为1~3,列数为3的元素构成子矩阵,“:”表示所有行或列。

a(:,3)

ans = 0 0 9

? 取行数为1~3,列数为3的元素构成子矩阵,用“end”表示某一维数中的最大值,即3。

a(1:3,end)

ans = 0 0 9

(2) 用单下标方式

取单下标为1、3、2、6的元素构成子矩阵。

a([1 3;2 6])

ans =

1 5 3 6

(3) 逻辑矩阵

子矩阵也可以利用逻辑矩阵来标识;

逻辑矩阵是大小和对应矩阵相同,而元素值为0或者1的矩阵。

可以用a(L1,L2)来表示子矩阵,其中L1、L2为逻辑向量,当L1、L2的元素为0则不取该位置元素,反之则取该位置的元素。

【例2.5】利用逻辑矩阵来提取矩阵,其中矩阵a如上图2.2所示。

l1=logical([1 0 1])

%给出逻辑向量l1

l1 =

1 0 1

l2=logical([1 1 0]) %给出逻辑向量l2

l2 =

1 1 0

a(l1,l2)

%取出1、3行且1、2列的元素

ans =

1 2 5 6

【例2.5续】逻辑矩阵可以由矩阵进行逻辑运算得出。

b=a>1 %得出逻辑向量b

b =

0 1 0 1 1 0 1 1 1

a(b) %按单下标顺序排成长列

ans = 3 5 2 4 6 9

3. 矩阵的赋值

? 全下标方式:a(i,j)=b,给a矩阵的部分元素赋值则b矩阵的行列数必须等于a矩阵的行列数。

clear a

a(1:2,1:3)=[1 1 1;1 1 1] %给第一、二行元素赋值为全1

a =

1 1 1 1 1 1

? 单下标方式:a(s)=b,b为向量,元素个数必须等于a矩阵的元素个数。

a(5:6)=[2 3]

%给第5、6元素赋值

a =

1 1 2 1 1 3

? 全元素方式:a(:)=b,给a矩阵的所有元素赋值则b矩阵的元素总数必须等于a矩阵的元素总数,但行列数不一定相等。

a=[1 2;3 4;5 6]

a =

1 2 3 4 5 6

b=[1 2 3;4 5 6]

b =

1 2 3 4 5 6

a(:)=b

%按单下标方式给a赋值

a =

1 5 4 3 2 6

4. 矩阵元素的删除

删除操作就是简单地将其赋值为空矩阵(用[]表示)。

a=[1 2 0;3 4 0;5 6 9]

a =

1 2 0 3 4 0 5 6 9

a(:,3)=[]

%删除一列元素

a =

1 2 3 4 5 6

a(1)=[]

%删除一个元素,则矩阵变为行向量

a =

3 5 2 4 6

a=[]

%删除所有元素为空矩阵

a =

[]

5. 生成大矩阵

在MATLAB中,可以通过方括号“[]”实现将小矩阵联接起来生成一个较大的矩阵。

a=[1 2 0;3 4 0;5 6 9]

a =

1 2 0 3 4 0 5 6 9

[a;a]

%联接成6×3的矩阵

ans =

1 2 0 3 4 0 5 6 9 1 2 0 3 4 0 5 6 9

a=[1 2 0;3 4 0;5 6 9] [a a] %联接成3×6的矩阵

ans =

1 2 0 1 2 0 3 4 0 3 4 0 5 6 9 5 6 9 a=[1 2 0;3 4 0;5 6 9]

[a(1:2,1:2) 10*a(1:2,2:3)] %计算并联接

ans =

1 2 20 0 3 4 40 0

6. 矩阵的翻转 a =

1 2 0 3 4 0 5 6 9

表2.3 常用矩阵翻转函数

函数名 triu(X) 功能 产生X矩阵的上三角矩阵,其余元素补0。 例子 输入 triu(a) 结果 ans = 1 2 0 0 4 0 0 0 9 tril(X) 产生X矩阵的下三tril(a) ans =


第2章 MATLAB数值计算(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年内蒙古财经大学会计专硕学制、学费、招生人数、网报数据、

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: