matlab2011教程之二数值数组及向量化运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第 2 章 数值数组及向量化运算本章集中讲述两个数据类型(数值数组和逻辑数组)、两个特有概念变量(非数和空)、

以及MATLAB的数组运算和向量化编程。值得指出:本章内容是读者今后编写各种科学计

算M码的基本构件。

数值数组(Numeric Array)是MATLAB最重要的数据类型数组。在各种维度的数值数

组中,二维数组为最基本、最常用。本章对二维数组创建、标识、寻访、扩充、收缩等方

法进行了详尽细腻的描述,并进而将这些方法推广到高维数组。

本章讲述的逻辑数组主要产生于逻辑运算和关系运算。它是MATLAB 援引寻访数据、

构成数据流控制条件、、编写复杂程序所不可或缺的重要构件。

数组运算是MATLAB区别于其它程序语言的重要特征,是MATLAB绝大多数函数指

令、Simulink许多库模块的本性,是向量化编程的基础。为此,本章专辟第2.2节用于阐述MATLAB的这一重要特征。

在此提醒读者注意:随书光盘mbook目录上保存着本章相应的电子文档“ch02_数值数

组及向量化运算.doc”。该文档中有本章全部算例的可执行指令,以及相应的运算结果。

2.1数值数组的创建和寻访

2.1.1一维数组的创建

1递增/减型一维数组的创建

(1)“冒号”生成法

(2)线性(或对数)定点法

2其他类型一维数组的创建

(1)逐个元素输入法

(2)运用MATLAB函数生成法

【例2.1-1】一维数组的常用创建方法举例。

a1=1:6

a2=0:pi/4:pi

a3=1:-0.1:0

a1 =

1 2 3 4 5 6

a2 =

0 0.7854 1.5708 2.3562 3.1416

a3 =

Columns 1 through 8

1.0000 0.9000 0.8000 0.7000 0.6000 0.5000 0.4000 0.3000

Columns 9 through 11

0.2000 0.1000 0

b1=linspace(0,pi,4)

b2=logspace(0,3,4)

b1 =

0 1.0472 2.0944 3.1416

b2 =

1 10 100 1000

c1=[2 pi/2 sqrt(3) 3+5i]

c1 =

2.0000 1.5708 1.7321

3.0000 + 5.0000i rng default

c2=rand(1,5)

c2 =

0.8147 0.9058 0.1270 0.9134 0.6324

〖说明〗

x1=(1:6)' , x2=linspace(0,pi,4)'

y1=rand(5,1)

z1=[2; pi/2; sqrt(3); 3+5i]

2.1.2二维数组的创建

1小规模数组的直接输入法

【例2.1-2】在MATLAB环境下,用下面三条指令创建二维数组C。

a=2.7358; b=33/79;

C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]

C =

1.0000 5.4716 + 0.4177i 0.6909

0.7071 4.8244 3.5000 + 1.0000i

2中规模数组的数组编辑器创建法

3(×的数组输入MATLAB内存,并命名为A18。【例2.1-3】试用变量编辑器,把如下)6

0.8147 0.9134 0.2785 0.9649 0.9572 0.1419

0.9058 0.6324 0.5469 0.1576 0.4854 0.4218

0.1270 0.0975 0.9575 0.9706 0.8003 0.9157

图2.1-1 利用数组编辑器创建中规模数组

3中规模数组的M文件创建法

【例2.1-4】为数组AM,创建一个 exm020104_Matrix.m 文件。以后每当需要AM数组时,只要运行exm020104_Matrix文件,就可在内存生成AM。

图2.1-2 利用M文件创建数组

4利用MATLAB函数创建数组

【例2.1-5】利用MATLAB指令产生数组。

(1)

ao=ones(2,4)

az=zeros(2,5)

ae=eye(3)

am=magic(4)

ad=diag(am)

add=diag(diag(am))

ao =

1 1 1 1

1 1 1 1

az =

0 0 0 0 0

0 0 0 0 0

ae =

1 0 0

0 1 0

0 0 1

am =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 1

5 1

ad =

16

11

6

1

add =

16 0 0 0

0 11 0 0

0 0 6 0

0 0 0 1

(2)

%

rng default

Au=rand(1,5)

Ai=randi([-3,4],2,8)

As=randsrc(3,12,[-3,-1,1,3],1)

Ap=randperm(8)

Au =

0.8147 0.9058 0.1270 0.9134 0.6324

Ai =

-3 1 4 4 0 -2 4 4

-1 4 -2 4 3 0 3 2

As =

-1 -1 -3 1 -3 1 -3 3 3 -3 -3 1 1 -3 -1 -1 3 -1 -3 -1 3 -3 -1 1 -3 -3 -1 1 -3 1 3 1 -3 3 3 -1 Ap =

1 7 8 4 6 5

2 3

%

rng(0,'v5normal')

randn(2,6)

ans =

-0.4326 0.1253 -1.1465 1.1892 0.3273 -0.1867

-1.6656 0.2877 1.1909 -0.0376 0.1746 0.7258

(3)

n=5;lambda=2;

A = gallery('jordbloc',n,lambda)

A =

2 1 0 0 0

0 2 1 0 0

0 0 2 1 0

0 0 0 2 1

0 0 0 0 2

rng(11,'v5normal')

n=6;

kappa=1e8;

mode=2;

B= gallery('randsvd',n,kappa,mode)

Bsv=svd(B)'

Bc=cond(B)

B =

-0.2402 -0.6286 -0.6241 -0.1413 0.2258 -0.2410

-0.5761 0.2703 0.2092 -0.1420 -0.2454 -0.4657

0.5168 -0.1311 0.0244 -0.6882 -0.4403 -0.2138

0.5613 0.2022 -0.1260 0.2781 0.3097 -0.1772

-0.0744 0.0489 0.3518 -0.5518 0.7473 0.0709

-0.1044 -0.2899 0.1391 -0.0840 -0.2010 0.7394

Bsv =

1.0000 1.0000 1.0000 1.0000 1.0000 0.0000

Bc =

1.0000e+008

2.1.3二维数组元素的标识和寻访

1数组的维数和大小

(1)数组的维数(Dimension)

(2)数组的大小(Size)

【例2.1-6】数组的维数、大小和长度

相关文档
最新文档