MATLAB上机实验练习题答案.docx
- 文档编号:14109091
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:30
- 大小:116.38KB
MATLAB上机实验练习题答案.docx
《MATLAB上机实验练习题答案.docx》由会员分享,可在线阅读,更多相关《MATLAB上机实验练习题答案.docx(30页珍藏版)》请在冰点文库上搜索。
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]) 复习要点 矩阵产生和操作 1.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 2.reshape阵列重新排列 B=reshape(A,m,n)把A重新排成m×n的矩阵B △矩阵元素是按列存储的 A=9684D=reshape(A,4,2)D=98 247027 64 40 3.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 4.fliplr左右翻转---列 A=9684B=fliplr(A) 2470B=4869 0742 5.flipud上下翻转---行 B=flipud(A)B=2470 9684 6.tril下三角阵 L=tril(x,k)B1=tril(A,1) A=9684B1=9600 24702470 7.triu上三角阵 L=triu(x,k) B2=triu(A,1)B2=0684 0070 8.cat阵列连接C=cat(dim,A,B) 将A,B在dim维连接起来 G=cat(1,B1,B2)G=9600 2470 0684 0070 9.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.语句简单,编程效率高,用数学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 上机 实验 练习题 答案