第三章MATLAB的数值计算功能.docx

上传人:b****6 文档编号:13745658 上传时间:2023-06-17 格式:DOCX 页数:40 大小:105.23KB
下载 相关 举报
第三章MATLAB的数值计算功能.docx_第1页
第1页 / 共40页
第三章MATLAB的数值计算功能.docx_第2页
第2页 / 共40页
第三章MATLAB的数值计算功能.docx_第3页
第3页 / 共40页
第三章MATLAB的数值计算功能.docx_第4页
第4页 / 共40页
第三章MATLAB的数值计算功能.docx_第5页
第5页 / 共40页
第三章MATLAB的数值计算功能.docx_第6页
第6页 / 共40页
第三章MATLAB的数值计算功能.docx_第7页
第7页 / 共40页
第三章MATLAB的数值计算功能.docx_第8页
第8页 / 共40页
第三章MATLAB的数值计算功能.docx_第9页
第9页 / 共40页
第三章MATLAB的数值计算功能.docx_第10页
第10页 / 共40页
第三章MATLAB的数值计算功能.docx_第11页
第11页 / 共40页
第三章MATLAB的数值计算功能.docx_第12页
第12页 / 共40页
第三章MATLAB的数值计算功能.docx_第13页
第13页 / 共40页
第三章MATLAB的数值计算功能.docx_第14页
第14页 / 共40页
第三章MATLAB的数值计算功能.docx_第15页
第15页 / 共40页
第三章MATLAB的数值计算功能.docx_第16页
第16页 / 共40页
第三章MATLAB的数值计算功能.docx_第17页
第17页 / 共40页
第三章MATLAB的数值计算功能.docx_第18页
第18页 / 共40页
第三章MATLAB的数值计算功能.docx_第19页
第19页 / 共40页
第三章MATLAB的数值计算功能.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第三章MATLAB的数值计算功能.docx

《第三章MATLAB的数值计算功能.docx》由会员分享,可在线阅读,更多相关《第三章MATLAB的数值计算功能.docx(40页珍藏版)》请在冰点文库上搜索。

第三章MATLAB的数值计算功能.docx

第三章MATLAB的数值计算功能

3数值数组及其运算

3.1引导

【*例3.1-1】绘制函数

时的曲线。

x=0:

0.1:

1%定义自变量的采样点取值数组

y=x.*exp(-x)%利用数组运算计算各自变量采样点上的函数值

plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')%绘图

x=

Columns1through7

00.10000.20000.30000.40000.50000.6000

Columns8through11

0.70000.80000.90001.0000

y=

Columns1through7

00.09050.16370.22220.26810.30330.3293

Columns8through11

0.34760.35950.36590.3679

图3.1-1

 

3.2一维数组的创建和寻访

3.2.1一维数组的创建

3.2.2一维数组的子数组寻访和赋值

【*例3.2.2-1】子数组的寻访(Address)。

rand('state',0)%把均匀分布伪随机发生器置为0状态

x=rand(1,5)%产生

的均布随机数组

x=

0.95010.23110.60680.48600.8913

x(3)%寻访数组x的第三个元素。

ans=

0.6068

x([125])%寻访数组x的第一、二、五个元素组成的子数组。

ans=

0.95010.23110.8913

x(1:

3)%寻访前三个元素组成的子数组

ans=

0.95010.23110.6068

x(3:

end)%寻访除前2个元素外的全部其他元素。

end是最后一个元素的下标。

ans=

0.60680.48600.8913

x(3:

-1:

1)%由前三个元素倒排构成的子数组

ans=

0.60680.23110.9501

x(find(x>0.5))%由大于0.5的元素构成的子数组

ans=

0.95010.60680.8913

x([12344321])%对元素可以重复寻访,使所得数组长度允许大于原数组。

ans=

Columns1through7

0.95010.23110.60680.48600.48600.60680.2311

Column8

0.9501

【*例3.2.2-2】子数组的赋值(Assign)。

x(3)=0%把上例中的第三个元素重新赋值为0

x=

0.95010.231100.48600.8913

x([14])=[11]%把当前x数组的第一、四个元素都赋值为1。

x=

1.00000.231101.00000.8913

3.3二维数组的创建

3.3.1直接输入法

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

a=2.7358;b=33/79;%这两条指令分别给变量a,b赋值。

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

%这指令用于创建二维数组C

C=

1.00005.4716+0.4177i0.6909

0.70714.82443.5000+1.0000i

【*例3.3.1-2】复数数组的另一种输入方式。

M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16]

CN=M_r+i*M_i%由实部、虚部数组构成复数数组

M_r=

123

456

M_i=

111213

141516

CN=

1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i

4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i

3.3.2利用M文件创建和保存数组

【例3.3.2-1】创建和保存数组AM的MyMatrix.m文件。

%MyMatrix.mCreationandpreservationofmatrixAM

AM=[101,102,103,104,105,106,107,108,109;...

201,202,203,204,205,206,207,208,209;...

301,302,303,304,305,306,307,308,309];

3.4二维数组元素的标识

3.4.1“全下标”标识

3.4.2“单下标”标识

3.4.3“逻辑1”标识

【*例3.4.3-1】找出数组

中所有绝对值大于3的元素。

A=zeros(2,5);%预生成一个(2*5)全零数组

A(:

)=-4:

5%运用“全元素”赋值法获得A

L=abs(A)>3%产生与A同维的“0-1”逻辑值数组

islogical(L)%判断L是否逻辑值数组。

输出若为1,则是。

X=A(L)%把L中逻辑值1对应的A元素取出

A=

-4-2024

-3-1135

L=

10001

00001

ans=

1

X=

-4

4

5

【*例3.4.3-2】演示逻辑数组与一般双精度数值数组的关系和区别。

(本例在例3.4.3-1基础上进行)。

(1)逻辑数组与双精度数组的相同之处

Num=[1,0,0,0,1;0,0,0,0,1];%产生与L数组外表完全相同的“双精度数组”

N_L=Num==L%假如Num与L数值相等,则应得1。

c_N=class(Num)%用class指令检查Num的类属

c_L=class(L)%用class指令检查L的类属

N_L=

11111

11111

c_N=

double

c_L=

double

(2)逻辑数组与一般双精度数组的差别

islogical(Num)%检查Num是否属于逻辑数组类

Y=A(Num)%试探Num能否象L一样具有标识作用

ans=

0

?

?

?

Indexintomatrixisnegativeorzero.Seereleasenotesonchangesto

logicalindices.

3.5二维数组的子数组寻访和赋值

【*例3.5-1】不同赋值方式示例。

A=zeros(2,4)%创建

的全零数组

A=

0000

0000

A(:

)=1:

8%全元素赋值方式

A=

1357

2468

s=[235];%产生单下标数组行数组

A(s)%由“单下标行数组”寻访产生A元素组成的行数组

Sa=[102030]'%Sa是长度为3的“列数组”

A(s)=Sa%单下标方式赋值

ans=

235

Sa=

10

20

30

A=

120307

10468

A(:

[23])=ones

(2)%双下标赋值方式:

把A的第2、3列元素全赋为1

A=

1117

10118

3.6执行数组运算的常用函数

3.6.1函数数组运算规则的定义:

3.6.2执行数组运算的常用函数

【*例3.6.2-1】演示pow2的数组运算性质。

A=[1:

4;5:

8]%生成

数组

A=

1234

5678

pow2(A)%计算

的结果也是

数组

ans=

24816

3264128256

3.7数组运算和矩阵运算

3.7.1数组运算和矩阵运算指令对照汇总

【*例3.7.1-1】两种不同转置的比较

clear;A=zeros(2,3);

A(:

)=1:

6;%全元素赋值法

A=A*(1+i)%运用标量与数组乘产生复数矩阵

A_A=A.'%数组转置,即非共轭转置

A_M=A'%矩阵转置,即共轭转置

A=

1.0000+1.0000i3.0000+3.0000i5.0000+5.0000i

2.0000+2.0000i4.0000+4.0000i6.0000+6.0000i

A_A=

1.0000+1.0000i2.0000+2.0000i

3.0000+3.0000i4.0000+4.0000i

5.0000+5.0000i6.0000+6.0000i

A_M=

1.0000-1.0000i2.0000-2.0000i

3.0000-3.0000i4.0000-4.0000i

5.0000-5.0000i6.0000-6.0000i

3.8多项式的表达方式及其操作

3.8.1多项式的表达和创建

3.8.1.1多项式表达方式的约定

3.8.1.2多项式行向量的创建方法

【*例3.8.1.2-1】求3阶方阵A的特征多项式。

A=[111213;141516;171819];

PA=poly(A)%A的特征多项式

PPA=poly2str(PA,'s')%以较习惯的方式显示多项式

PA=

1.0000-45.0000-18.0000-0.0000

PPA=

s^3-45s^2-18s-2.8387e-015

【*例3.8.1.2-2】由给定根向量求多项式系数向量。

R=[-0.5,-0.3+0.4*i,-0.3-0.4*i];%根向量

P=poly(R)%R的特征多项式

PR=real(P)%求PR的实部

PPR=poly2str(PR,'x')

P=

1.00001.10000.55000.1250

PR=

1.00001.10000.55000.1250

PPR=

x^3+1.1x^2+0.55x+0.125

3.8.2多项式运算函数

【*例3.8.2-1】求

的“商”及“余”多项式。

p1=conv([1,0,2],conv([1,4],[1,1]));%计算分子多项式

p2=[1011];%注意缺项补零

[q,r]=deconv(p1,p2);

cq='商多项式为';cr='余多项式为';

disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')])

商多项式为s+5

余多项式为5s^2+4s+3

【*例3.8.2-2】两种多项式求值指令的差别。

S=pascal(4)%生成一个4阶方阵

P=poly(S);PP=poly2str(P,'s')

PA=polyval(P,S)%独立变量取数组S元素时的多项式值

PM=polyvalm(P,S)%独立变量取矩阵S时的多项式值

S=

1111

1234

13610

141020

PP=

s^4-29s^3+72s^2-29s+1

PA=

1.0e+004*

0.00160.00160.00160.0016

0.00160.0015-0.0140-0.0563

0.0016-0.0140-0.2549-1.2089

0.0016-0.0563-1.2089-4.3779

PM=

1.0e-011*

-0.00770.0053-0.00960.0430

-0.00680.0481-0.01100.1222

0.00750.1400-0.00950.2608

0.04300.2920-0.00070.4737

【*例3.8.2-3】部分分式展开。

a=[1,3,4,2,7,2];%分母多项式系数向量

b=[3,2,5,4,6];%分子多项式系数向量

[r,s,k]=residue(b,a)

r=

1.1274+1.1513i

1.1274-1.1513i

-0.0232-0.0722i

-0.0232+0.0722i

0.7916

s=

-1.7680+1.2673i

-1.7680-1.2673i

0.4176+1.1130i

0.4176-1.1130i

-0.2991

k=

[]

3.9标准数组生成函数和数组操作函数

3.9.1标准数组生成函数

【*例3.9.1-1】标准数组产生的演示。

ones(1,2)%产生长度为2的全1行数组

ans=

11

ones

(2)%产生

的全1阵

ans=

11

11

randn('state',0)%把正态随机数发生器置0

randn(2,3)%产生

的正态随机阵

ans=

-0.43260.1253-1.1465

-1.66560.28771.1909

D=eye(3)%产生

的单位阵

D=

100

010

001

diag(D)%取D阵的对角元

ans=

1

1

1

diag(diag(D))%内diag取D的对角元,外diag利用一维数组生成对角阵

ans=

100

010

001

repmat(D,1,3)%在水平方向“铺放”三个D阵

ans=

100100100

010010010

001001001

3.9.2数组操作函数

【*例3.9.2-1】diag与reshape的使用演示。

a=-4:

4%产生一维数组

A=reshape(a,3,3)%把一维数组a重排成

的二维数组

a=

-4-3-2-101234

A=

-4-12

-303

-214

a1=diag(A,1)%取A阵“第一上对角线”的元素

a1=

-1

3

A1=diag(a1,-1)%产生以a1数组元素为“第一下对角线”元素的二维数组

A1=

000

-100

030

【*例3.9.2-2】数组转置、对称交换和旋转操作后果的对照比较。

A

A=

-4-12

-303

-214

A.'%转置

ans=

-4-3-2

-101

234

flipud(A)%上下对称交换

ans=

-214

-303

-4-12

fliplr(A)%左右对称交换

ans=

2-1-4

30-3

41-2

rot90(A)%逆时针旋转90度

ans=

234

-101

-4-3-2

【*例3.9.2-3】演示Kronecker乘法不具备“可交换规律”。

B=eye

(2)%产生

单位阵

C=reshape(1:

4,2,2)%利用重组操作产生

矩阵

B=

10

01

C=

13

24

kron(B,C)

ans=

1300

2400

0013

0024

kron(C,B)

ans=

1030

0103

2040

0204

3.10数组构作技法综合

【*例3.10-1】数组的扩展。

(1)数组的赋值扩展法

A=reshape(1:

9,3,3)%创建

数组A

A=

147

258

369

A(5,5)=111%扩展为

数组。

扩展部分除(5,5)元素为111外,其余均为0。

A=

14700

25800

36900

00000

0000111

A(:

6)=222%标量对子数组赋值,并扩展为

数组。

A=

14700222

25800222

36900222

00000222

0000111222

(2)多次寻访扩展法

AA=A(:

[1:

6,1:

6])%相当于指令repmat(A,1,2),读者可以试试。

AA=

1470022214700222

2580022225800222

3690022236900222

0000022200000222

00001112220000111222

(3)合成扩展法

B=ones(2,6)%创建

全1数组

B=

111111

111111

AB_r=[A;B]%行数扩展合成

AB_r=

14700222

25800222

36900222

00000222

0000111222

111111

111111

AB_c=[A,B(:

1:

5)']%列数扩展合成

AB_c=

1470022211

2580022211

3690022211

0000022211

000011122211

【*例3.10-2】提取子数组,合成新数组。

A%重显A数组

A=

14700222

25800222

36900222

00000222

0000111222

AB_BA=triu(A,1)+tril(A,-1)%利用操作函数,使主对角元素为全0

AB_BA=

04700222

20800222

36000222

00000222

00000222

AB1=[A(1:

2,end:

-1:

1);B(1,:

)]%灵活合成

AB1=

22200741

22200852

111111

【*例3.10-3】单下标寻访和reshape指令演示。

clear%清除内存变量

A=reshape(1:

16,2,8)%变一维数组成

数组

A=

13579111315

246810121416

reshape(A,4,4)%变

数组为

数组

ans=

15913

261014

371115

481216

s=[13689111416];%定义“单下标”数组

A(s)=0%利用“单下标”数组对A的元素重新赋值

A=

0057001315

2400101200

【*例3.10-4】“对列(或行)同加一个数”三种的操作方法。

clear,A=reshape(1:

9,3,3)

A=

147

258

369

b=[123];A_b1=A-b([111],:

)%使A的第1,2,3行分别减b向量[123]

A_b1=

024

135

246

A_b2=A-repmat(b,3,1)

A_b2=

024

135

246

A_b3=[A(:

1)-b

(1),A(:

2)-b

(2),A(:

3)-b(3)]

A_b3=

024

135

246

【*例3.10-5】逻辑函数的运用示例。

randn('state',1),R=randn(3,6)%创建正态随机阵

R=

0.86440.8735-1.10270.1684-0.5523-0.6149

0.0942-0.43800.3962-1.9654-0.8197-0.2546

-0.8519-0.4297-0.9649-0.74431.1091-0.2698

L=abs(R)<0.5|abs(R)>1.5%不等式条件运算,结果给出逻辑数组

L=

000100

111101

010001

R(L)=0%“逻辑1”对应的元素赋0值。

R=

0.86440.8735-1.10270-0.5523-0.6149

0000-0.81970

-0.85190-0.9649-0.74431.10910

s=(find(R==0))'%利用find获得符合关系等式条件的元素“单下标”

s=

256810111718

R(s)=111%利用“单下标”定位赋值

R=

0.86440.8735-1.1027111.0000-0.5523-0.6149

111.0000111.0000111.0000111.0000-0.8197111.0000

-0.8519111.0000-0.9649-0.74431.1091111.0000

[ii,jj]=find(R<0);%利用find获得符合关系等式条件的元素“双下标”

disp(ii'),disp(jj')

3133121

1334556

3.11高维数组

3.11.1高维数组的创建

【*例3.11.1-1】“全下标”元素赋值

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2