MATLAB数值计算

更新时间:2023-12-08 15:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第5章 MATLAB数值计算

MATLAB的数学计算=数值计算+符号计算

其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。

注:数值计算有误差。数值计算受到计算机所保留的有效位数的限制,因此每一次运算都会有一定的误差,重复的多次数值计算就可能会造成很大的累积误差。

5.1 矩阵和数组

MATLAB最基本也是最重要的功能就是进行实数或复数矩阵的运算。

矩阵和数组的概念

在MATLAB的运算中,经常要使用标量、向量、矩阵和数组,这几个名称的定义如下: ? 标量:是指1×1的矩阵,即为只含一个数的矩阵。 ? 向量:是指1×n或n×1的矩阵,即只有一行或者一列的矩阵。

? 矩阵:是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,0×0矩阵为空矩阵([])。

? 数组:是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。

5.1.1矩阵输入(前已讲“向量的输入”,相同!)

(1) 矩阵元素应用方括号([])括住;

(2) 每行内的元素间用逗号或空格隔开; (3) 行与行之间用分号或回车键隔开; (4) 元素可以是数值或表达式。

1. 通过显式元素列表输入矩阵

c=[1 2;3 4;5 3*2]

% [ ]表示构成矩阵,分号分隔行,空格分隔元素

c =

1 2 3 4 5 6

用回车键代替分号分隔行:

c=[1 2

3 4 5 6]

1 2 3 4 5 6

1

2. 通过语句生成矩阵

(1) 使用from:step:to方式生成向量

(2) 使用linspace和logspace函数生成向量 3. 由矩阵生成函数产生特殊矩阵

MATLAB提供了很多能够产生特殊矩阵的函数,各函数的功能如表5.2所示。

表5.2 矩阵生成函数

函数名 zeros(m,n) 功能 产生m×n的全0矩阵 ones(m,n) 产生m×n的全1矩阵 rand(m,n) 产生均匀分布的随机矩阵,元素取值范围0.0~1.0。 randn(m,n) 产生正态分布的随机矩阵 magic(N) 产生N阶魔方矩阵(矩阵的行、列和对角线上元素的和相等) eye(m,n) 产生m×n的单位矩阵 eye(3) ans = 1 0 0 0 1 0 0 0 1 magic(3) ans = 8 1 6 3 5 7 4 9 2 randn(2,3) ans = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 rand(2,3) ones(2,3) ans = 1 1 1 1 1 1 ans = 0.9501 0.6068 0.8913 0.2311 0.4860 0.7621 例子 输入 zeros(2,3) 结果 ans = 0 0 0 0 0 0 注意:

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

X1=eye(2,3)

2

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文件创建矩阵。

5.1.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

3

5 6 9

(2) 单下标方式

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

2. 子矩阵块的产生

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

矩阵a为图5.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的矩阵。

4

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

【例5.5】利用逻辑矩阵来提取矩阵,其中矩阵a如上图5.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

【例5.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

5

本文来源:https://www.bwwdw.com/article/4cut.html

Top