MATLAB上机实验练习题答案.docx

上传人:b****7 文档编号:9668361 上传时间:2023-02-05 格式:DOCX 页数:30 大小:188.75KB
下载 相关 举报
MATLAB上机实验练习题答案.docx_第1页
第1页 / 共30页
MATLAB上机实验练习题答案.docx_第2页
第2页 / 共30页
MATLAB上机实验练习题答案.docx_第3页
第3页 / 共30页
MATLAB上机实验练习题答案.docx_第4页
第4页 / 共30页
MATLAB上机实验练习题答案.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

MATLAB上机实验练习题答案.docx

《MATLAB上机实验练习题答案.docx》由会员分享,可在线阅读,更多相关《MATLAB上机实验练习题答案.docx(30页珍藏版)》请在冰豆网上搜索。

MATLAB上机实验练习题答案.docx

MATLAB上机实验练习题答案

11级MATLAB上机实验练习题

1、给出一个系数矩阵A[234;541;132],U=[123],求出线性方程组的一个精确解。

2、给出两组数据x=[00.30.81.11.62.3]’y=[0.820.720.630.600.550.50]’,我们可以简单的认为这组数据在一条衰减的指数函数曲线上,y=C1+C2e-t通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。

3、

解线性方程

4、通过测量得到一组数据:

 

5、

已知一组测量值

 

6、从某一个过程中通过测量得到:

 

分别采用多项式和指数函数进行曲线拟合。

7、将一个窗口分成四个子窗口,分别用四种方法做出多峰函数的表面图(原始数据法,临近插值法,双线性插值法,二重三次方插值法)

8、在同一窗口使用函数作图的方法绘出正弦、余弦、双曲正弦、双曲余弦。

分别使用不同的颜色,线形和标识符。

9、下面的矩阵X表示三种产品五年内的销售额,用函数pie显示每种产品在五年内的销售额占总销售额的比例,并分离第三种产品的切片。

X=19.322.151.6

34.270.382.4

61.482.990.8

50.554.959.1

29.436.347.0

10、对应时间矢量t,测得一组矢量y

t

0

0.3

0.8

1.1

1.6

2.3

y

0.5

0.82

1.14

1.25

1.35

1.40

采用一个带有线性参数的指数函数进行拟合,y=a0+a1e-t+a2te-t,利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。

11、请创建如图所示的结构数组(9分)

姓名

编号

指标

江明顺

071023

身高:

176,体重:

82

于越忠

060134

身高:

168,体重:

74

邓拓

050839

身高:

182,体重:

77

12、创建如图所示的元胞数组。

(9分)

13、某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用‘*’表示。

要求写出达到题目要求的MATLAB操作过程,不要求计算结果。

年份

1990

1992

1994

1996

1998

2000

2002

2004

2006

2008

2010

产量(万吨)

75.995

91.972

105.711

123.203

131.669

150.697

179.323

203.212

226.505

249.633

256.344

14、在一次化学动力学实验中,在某温度下乙醇溶液中,两种化合物反应的产物浓度与反应时间关系的原始数据如下,请对这组数据进行三次多项式拟合,并画出拟合曲线,已知数据如下。

time=[2.55.07.510.013.017.020.030.040.050.060.070.0]

res=[0.290.560.771.051.361.522.002.272.813.053.253.56]

15、请在-2

形成的曲面网线图。

16、请在同一窗口画出两条曲线,y1=sin(x),y2=cos(x),要求添加网格线,x轴标注IndependentVariableX,y轴标注DependentVariableY1&Y2,标注标题SineandCosineCurve,在(1.5,0.3)处标注cos(x),坐标轴设定在x轴[0,2Π],y轴[-0.9,0.9]。

答案

1、>>A=[234;541;132];

>>U=[123]';

>>X=A\U

X=

-0.8148

1.6667

-0.5926

2、

>>t=[00.30.81.11.62.3]';

>>y=[0.820.720.630.600.550.50]';

>>E=[ones(size(t))exp(-t)];

>>C=E\y

C=

0.4760

0.3413

>>x=0:

0.01:

2.5;

>>z=0.4760+0.3413*exp(-x);

>>plot(t,y,'O',x,z,'r:

')

3、

>>A=[3105;0-673;0430;2-126];

>>Y=[2478]';

>>X=A\Y

X=

-4.8247

1.3944

0.4741

3.0159

4、

>>t=[12345678910]';

>>y=[4.8424.3623.7543.3683.1693.0833.0343.0163.0123.005]';

>>E1=[ones(size(t))exp(-t)];

>>C=E1\y

C=

3.1621

5.1961

>>E2=[ones(size(t))t.*exp(-t)];

>>D=E2\y

D=

3.0039

5.0046

>>x=1:

0.01:

10;

>>y1=3.1621+5.1961*exp(-x);

>>y2=3.0039+5.0046*x.*exp(-x);

>>plot(t,y,'O',x,y1,'r:

',x,y2,'b-')

>>p1=polyfit(t,y,2)

p1=

0.0411-0.63835.3937

>>p2=polyfit(t,y,3)

p2=

-0.00410.1085-0.94935.7443

>>y3=polyval(p1,x);

>>y4=polyval(p2,x);

>>plot(t,y,'O',x,y3,'r:

',x,y4,'b-')

6、

>>t=[00.20.40.60.81.02.05.0]';

>>y=[1.01.511.882.132.292.402.60-4.00]';

>>p=polyfit(t,y,4)

p=

-0.09930.7935-2.28412.98820.9995

>>E=[ones(size(t))exp(-t)];

>>C=E\y

C=

-0.0565

2.5674

>>x=0:

0.001:

5;

>>y1=-0.0565+2.5674*exp(-x);

>>y2=polyval(p,x);

>>plot(t,y,'O',x,y1,'r:

',x,y2,'b-')

7、

•001functioncompare_interp()

•002%COMPARE_INTERP不同插值运算的比较

•003

•004%原始数据

•005[x,y]=meshgrid(-3:

1:

3);

•006z=peaks(x,y);

•007figure

(1);clf

•008surfc(x,y,z);

•009title('原始数据')

•010%进行插值运算

•011[xi,yi]=meshgrid(-3:

0.25:

3);

•012zi1=interp2(x,y,z,xi,yi,'nearest');

•013zi2=interp2(x,y,z,xi,yi,'linear');

•014zi3=interp2(x,y,z,xi,yi,'cubic');

•015zi4=interp2(x,y,z,xi,yi,'spline');

•016%通过可视化结果比较

•017figure

(2)

•018subplot(2,2,1);surf(xi,yi,zi1);

•019title('二维插值-''nearest''')

•020subplot(2,2,2);surf(xi,yi,zi2);

•021title('二维插值-''linear''')

•022subplot(2,2,3);surf(xi,yi,zi3)

•023title('二维插值-''cubic''')

•024subplot(2,2,4);surf(xi,yi,zi4)

•025title('二维插值-''spline''')

•026%可视化结果

•027figure(3)

•028subplot(2,2,1);contour(xi,yi,zi1)

•029title('二维插值-''nearest''')

•030subplot(2,2,2);contour(xi,yi,zi2)

•031title('二维插值-''linear''')

•032subplot(2,2,3);contour(xi,yi,zi3)

•033title('二维插值-''cubic''')

•034subplot(2,2,4);contour(xi,yi,zi4)

•035title('二维插值-''spline'''')

8、

>>x=-pi:

pi/4:

pi;

>>y1=sin(x);

>>y2=cos(x);

>>y3=sinh(x);

>>y4=cosh(x);

>>plot(x,y1,'rO:

',x,y2,'b*-',x,y3,'gs--',x,y4,'k^-.')

9、

>>X=[19.322.151.6;34.270.382.4;61.482.990.8;50.554.959.1;29.439.347];

>>x=sum(X)

x=

194.8000269.5000330.9000

>>explode=[001];

>>pie(x,explode)

10、

>>t=[00.30.81.11.62.3]';

>>y=[0.50.821.141.251.351.40]';

>>E=[ones(size(t))exp(-t)t.*exp(-t)]

E=

1.00001.00000

1.00000.74080.2222

1.00000.44930.3595

1.00000.33290.3662

1.00000.20190.3230

1.00000.10030.2306

>>A=E\y

A=

1.3974

-0.8988

0.4097

>>x=0:

0.01:

2.5;

>>Y=1.3974-0.8988*exp(-x)+0.4097*x.*exp(-x);

>>plot(t,y,'O',x,Y,'r-')

11、

A=struct('name',{'江明顺','于越忠','邓拓'},'NO',{'071023','060134','050839'});

A

(1).level=struct('height','176','weight','82')

A=

1x3structarraywithfields:

name

NO

level

>>A

(2).level=struct('height','168','weight','74')

A=

1x3structarraywithfields:

name

NO

level

>>A(3).level=struct('height','182','weight','77')

A=

1x3structarraywithfields:

name

NO

level

12、

>>B=cell(1,2);

>>B{1,1}=struct('date','2007/06/04','billing',[125.7389.3;254.9538.5])

B=

[1x1struct][]

>>B{1,2}=struct('name','maggie','profession','teacher','hobby','dance')

B=

[1x1struct][1x1struct]

>>cellplot(B)

13、

>>year=1990:

2:

2010;

>>product=[75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344];

>>p1999=interp1(year,product,1999,’spline’)

>>x=1990:

1:

2010;

>>y=interp1(year,product,x,'spline');

>>plot(year,product,'*',x,y)

14、

>>X=[2.55.07.510.013.017.020.030.040.050.060.070.0];

>>Y=[0.290.560.771.051.361.522.002.272.813.053.253.56];(

>>P=polyfit(X,Y,3);

>>x=2.5:

0.1:

70;

>>y=polyval(P,x)

>>plot(X,Y,’O’,x,y)

>>girdon

15、

>>clear

>>x=-2:

0.2:

2;

>>y=-2:

0.2:

2;

>>[X,Y]=meshgrid(x,y);

>>Z=X.*exp(-X.^2-Y.^2);

>>mesh(X,Y,Z)

16、

》x=0:

pi/10:

2*pi;

》y1=sin(x);

》y2=cos(x);

》plot(x,y1,x,y2) ;

》gridon

》xlabel(‘IndependentVariableX’);

》ylabel(‘DependentVariableY1&Y2’);

》title(‘SineandCosineCurve’)

》text(1.5,0.3,’cos(x)’);

》axis([02*pi-0.90.9])

 

复习要点

矩阵产生和操作

一.diag对角矩阵和矩阵的对角化

1.x=diag(v)产生v的元素处于主对角线的对角方阵,v为n元向量。

x=diag([123])x=100

020

003

2.x=diag(v,k)k表示v的元素处在第k条对角线上

k=0主对角线y=diag([123],1)

k>0主对角线上y=0100

k<0主对角线下0020

.0003

.0000

3.v=diag(x,k)x为矩阵,v为列向量,x的第k条对角线上的元素

z=944v=diag(z)v=diag(z,-1)

2809

678v=8v=2

87

二.reshape阵列重新排列

B=reshape(A,m,n)把A重新排成m×n的矩阵B

△矩阵元素是按列存储的

A=9684D=reshape(A,4,2)D=98

247027

64

40

三.rot90矩阵旋转90o(反时针)

rot90(A,k)将A反时针旋转k*90o

A=537B1=rot90(A)区别于A'B2=A'

723B1=735B2=574

425322322

574735

B3=rot90(A,3)B3=475

223

537

四.fliplr左右翻转---列

A=9684B=fliplr(A)

2470B=4869

0742

五.flipud上下翻转---行

B=flipud(A)B=2470

9684

六.tril下三角阵

L=tril(x,k)B1=tril(A,1)

A=9684B1=9600

24702470

七.triu上三角阵

L=triu(x,k)

B2=triu(A,1)B2=0684

0070

八.cat阵列连接C=cat(dim,A,B)

将A,B在dim维连接起来

G=cat(1,B1,B2)G=9600

2470

0684

0070

九.repmat复制并平铺阵列

1.B=repmat(A,m,n)A为矩阵,将A平铺成m×n格式

A=[12;34]B=repmat(A,2,3)B=AAA

AAA

2.B=repmat(A,2,3)A为标量B=repmat(5,2,3)B=555

555

十.Meshigrid

[X,Y]=meshgrid(1:

4,1:

4)

X=

1234

1234

1234

1234

Y=

1111

2222

3333

4444

矩阵逻辑运算

1.all—矩阵所有元素是否非零

有1个或多个0→0

A为向量

All(A)

A为矩阵—按列

a=[12;04]b=au(0)b=01

2.any—测试任意非零值

只要有不是0→1

B=any(A)

所有都为0→0

a=[120;400;050]any(a)ans=110

3.find—查找非零元素的值和下标k=find(x)—阵列中

[i,j]=find(x)—矩阵中[i,j,v]=find(x)—v为值,可得

v值的列

a=zeros(5,20);

a(3,7)=0.5;i=3j=7v=0.5000

a(4,15)=-0.4;415-0.4000

[i,j,v]=find(a);

4.exist:

检查给定变量或文件是否存在

a=exist('item')

ident=exist('item',kind)

5.is*检测状态

A=one(3,3);s='ad3fi'

A(:

:

)=[];isletter

isempty(A);ans=11011

ans=1

6.logical—数值转变成逻辑值

logical(A)返回能够用于逻辑索引或逻辑测试的数组。

A=logical(eye(3))

A=100B=rand(3)B=0.44470.92180.4057

0100.61540.73820.9355

0010.79190.17630.9169

B(A)

ans=0.4447

0.7382

0.9109

字符串部分

字符串的比较

三种情况:

1.比较两个字符串或两个字符串的一部分是否相等

2.逐个比较两个字符串中的字符,判别是否相等

3.对字符串中的每一个元素进行分类判别是字符还是空格

一.比较两个字符串strcmp

strcmp判别两个字符串是否相等

strncmp判别两个字符的前n个字符是否相等。

Strncmp

Eg:

str1=‘hello’

str2=‘help’

strcmp(str1,str2)

ans=0

strcmp(str1,str2,3)

ans=1

这两个函数还可以比较两个字符串的单元数组。

Eg:

A={‘pizza’;‘chips’;‘candy’;‘cake’;‘beer’};

B={‘pizza’;‘chololate’;‘pretzels’;‘beef’;‘beer’};

strcmp(A,B)strcmp(A,B,1)strncmp(A,B,4)

ans=1ans=1ans=1

010

000

000

1.11

二.用运算符比较字符串

“==”比较两个字符串中对应字符是否相同

A=‘fate’;

B=‘cake’;

A==B

ans=0101

“~=”表示不等于

A~=B

ans=1010

三.字符串中字符的分类

isletter是否为字母isspace是否为空格或制表符

mystring=‘Room401’;

A=isletter(mystring);

A=11110000

B=isspace(mystring)

B=00001000

对二维数组也可以

Eg:

A=[‘12A’;’13B’];

L=isletter(A)S=isspace(A)

L=0001S=0100

00010010

对单元矩阵形式的字符串,不能直接应用这两个函数。

但可以对指定的单元进行判别。

Eg:

strcell={‘piza’;‘chis’;‘cany’;‘cake’;‘er’};

LL=isletter(strcell{1});

LL=11011

SS=isspace(strcell{2})

SS=00010

字符串的查找与替换

一.strrep可实现标准的查找与替换。

Eg:

label=‘sample1,10/28/95’;

newlabel=strrep(label,‘10/28/95’,‘12/20/1999’);

newlabel=sample1,12/20/1999

二.findstr用于在字符串中查找指定的子串

找到一个子串返回开始位置

找到多个子串用一个矢量指出它们的位置

没找到返回[]

Eg:

position=findstr(‘1’,newlabel);

position=81117

position=find(‘wa’,newlabel);

position=[]

三.strtok先在字符串中查找分隔字符(如空格,‘/’,制表符等),然后返回第1个分隔符前的子串。

Eg:

first=strtok(label);

first=sample

first=strtok(label,‘1’)

first=sample1,10

知识要点

MATLAB的特点

1.以复数矩阵作为基本编程单元,使操作变得轻而易举,矩阵不需定义。

2.语句简单,编程效率高,用数学语言编写比C,Basic,Fortran更加接近人们书写计算公式的思维方式。

MATLAB俗称演算纸式科学算法语

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

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1