MATLAB上机实验练习题答案.pdf_第1页
MATLAB上机实验练习题答案.pdf_第2页
MATLAB上机实验练习题答案.pdf_第3页
MATLAB上机实验练习题答案.pdf_第4页
MATLAB上机实验练习题答案.pdf_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

11 级级 MATLAB 上机实验练习题上机实验练习题 1、给出一个系数矩阵 A2 3 4;5 4 1;1 3 2,U=1 2 3,求出线性方程组的一个精确解。 2、给出两组数据 x=0 0.3 0.8 1.1 1.6 2.3y=0.82 0.72 0.63 0.60 0.55 0.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 t00.30.81.11.62.3 y0.50.821.141.251.351.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 操作过程,不要求计算结果。 年份19901992199419961998200020022004200620082010 产量 (万吨) 75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344 14、在一次化学动力学实验中,在某温度下乙醇溶液中,两种化合物反应的产物浓度与反应 时间关系的原始数据如下,请对这组数据进行三次多项式拟合,并画出拟合曲线,已知数据 如下。 time=2.5 5.0 7.5 10.0 13.0 17.0 20.0 30.0 40.0 50.0 60.0 70.0 res=0.29 0.56 0.77 1.05 1.36 1.52 2.00 2.27 2.81 3.05 3.25 3.56 15、请在2A=2 3 4;5 4 1;1 3 2; U=1 2 3; X=AU X = -0.8148 1.6667 -0.5926 2、 t=0 0.3 0.8 1.1 1.6 2.3; y=0.82 0.72 0.63 0.60 0.55 0.50; E=ones(size(t) exp(-t); C=Ey 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:) 00.511.522.5 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 3、 A=3 1 0 5;0 -6 7 3;0 4 3 0;2 -1 2 6; Y=2 4 7 8; X=AY X = -4.8247 1.3944 0.4741 3.0159 4、 t=1 2 3 4 5 6 7 8 9 10; y=4.842 4.362 3.754 3.368 3.169 3.083 3.034 3.016 3.012 3.005; E1=ones(size(t) exp(-t); C=E1y C = 3.1621 5.1961 E2=ones(size(t) t.*exp(-t); D=E2y 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-) 12345678910 3 3.5 4 4.5 5 5.5 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-) 12345678910 2.5 3 3.5 4 4.5 5 6、 t=0 0.2 0.4 0.6 0.8 1.0 2.0 5.0; y=1.0 1.51 1.88 2.13 2.29 2.40 2.60 -4.00; p=polyfit(t,y,4) p = -0.09930.7935-2.28412.98820.9995 E=ones(size(t) exp(-t); C=Ey 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-) 00.511.522.533.544.55 -5 -4 -3 -2 -1 0 1 2 3 7、 001function compare_interp( ) 002%COMPARE_INTERP 不同插值运算的比较 003 004% 原始数据 005x,y = meshgrid(-3:1:3); 006z = peaks(x,y); 007figure(1); clf 008surfc(x,y,z); 009title(原始数据) 010% 进行插值运算 011xi, 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) -4 -2 0 2 4 -4 -2 0 2 4 -6 -4 -2 0 2 4 6 原 始 数 据 -5 0 5 -5 0 5 -10 0 10 二 维 插 值 - nearest -5 0 5 -5 0 5 -10 0 10 二 维 插 值 - linear -5 0 5 -5 0 5 -10 0 10 二 维 插 值 - cubic -5 0 5 -5 0 5 -10 0 10 二 维 插 值 - 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-.) -4-3-2-101234 -15 -10 -5 0 5 10 15 9、 X=19.3 22.1 51.6;34.2 70.3 82.4;61.4 82.9 90.8;50.5 54.9 59.1;29.4 39.3 47; x=sum(X) x = 194.8000269.5000330.9000 explode=0 0 1; pie(x,explode) 24% 34% 42% 10、 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; 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=Ey 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-) 00.511.522.5 0.4 0.6 0.8 1 1.2 1.4 1.6 11、 A=struct(name,江明顺,于越忠,邓拓,NO,071023,060134,050839); A(1).level=struct(height,176,weight,82) A= 1x3 struct array with fields: name NO level A(2).level=struct(height,168,weight,74) A= 1x3 struct array with fields: name NO level A(3).level=struct(height,182,weight,77) A= 1x3 struct array with fields: name NO level 12、 B=cell(1,2); B1,1=struct(date,2007/06/04,billing,125.7 389.3;254.9 538.5) B = 1x1 struct B1,2=struct(name,maggie,profession,teacher,hobby,dance) B = 1x1 struct1x1 struct cellplot(B) 13、 year = 1990:2:2010; product = 75.99591.972105.711123.203131.669150.697179.323203.212226.505 249.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.5 5.0 7.5 10.0 13.0 17.0 20.0 30.0 40.0 50.0 60.0 70.0; Y=0.29 0.56 0.77 1.05 1.36 1.52 2.00 2.27 2.81 3.05 3.25 3.56;( P=polyfit(X, Y, 3); x=2.5:0.1:70; y=polyval(P,x) plot(X,Y,O,x,y) gird on 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) ; grid on xlabel(Independent Variable X); ylabel(Dependent Variable Y1Y2); title(Sine and Cosine Curve) text(1.5,0.3,cos(x); axis(02*pi-0.90.9) 复习要点复习要点 矩阵产生和操作矩阵产生和操作 一.diag 对角矩阵和矩阵的对角化 1.x=diag(v)产生 v 的元素处于主对角线的对角方阵,v 为 n 元向量。 x=diag(1 2 3)x=100 020 003 2.x=diag(v,k) k 表示 v 的元素处在第 k 条对角线上 k=0 主对角线y=diag(1 2 3,1) k0 主对角线上y=0100 k0 主对角线下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 重新排成 mn 的矩阵 B 矩阵元素是按列存储的 A=9684D=reshape(A,4,2)D=98 247027 64 40 三. rot 90 矩阵旋转 90o(反时针) rot 90(A,k) 将 A 反时针旋转 k*90o A= 537B1=rot 90(A)区别于 AB2=A 723B1= 735B2= 574 425322322 574735 B3=rot 90(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 平铺成 mn 格式 A=1 2;3 4B=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= 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Y= 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 矩阵逻辑运算矩阵逻辑运算 1. all矩阵所有元素是否非零 有 1 个或多个 00 A 为向量 All(A) A 为矩阵按列 a=1 2;0 4b=au(0)b=01 2. any测试任意非零值 只要有不是 01 B=any(A) 所有都为 00 a=1 2 0;4 0 0;0 5 0any(a)ans=1 1 0 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= 1 1 0 1 1 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=Room 401; A=isletter(mystring); A=11110000 B=isspace(mystring) B=00001000 对二维数组也可以 Eg:A=1 2A; 13 B; L=isletter(A)S=isspace(A) L= 0001S = 0100 00010010 对单元矩阵形式的字符串,不能直接应用这两个函数。但可以对指定的单元进行判别。 Eg:strcell=pi za; chi s; can y; cake; er; LL=isletter(strcell1); LL=11011 SS=isspace(strcell2) SS=00010 字符串的查找与替换字符串的查找与替换 一. strrep 可实现标准的查找与替换。 Eg:label=sample 1,10/28/95; newlabel=strrep(label, 10/28/95, 12/20/1999); newlabel=sample 1,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=sample 1,10 知识要点知识要点 MATLAB 的特点的特点 1.以复数矩阵作为基本编程单元,使操作变得轻而易举,矩阵不需定义。 2.语句简单,编程效率高,用数学语言编写比 C,Basic,Fortran 更加接近人们书写计算公式的思维方式。 MATLAB 俗称演算纸式科学算法语言。 3.语句功能强大,相当于其它高级语言中的几十条,几百条语句。 4.丰富的绘图功能:线性坐标、对数坐标、极坐标,只须调用不同的绘图函数命令。 5.提供许多面向应用问题求解的工具箱函数。 6.易扩展性。 MATLAB 系统中系统中 Simulink 和和 Stateflow 两个重要部件两个重要部件 Simulink 是基于 MATLAB 的框图设计环境,可以用来对各种动态系统进行建模、分析和仿真,它的建模 范围广泛,可以针对任何能够用数学来描述的系统进行建模。Stateflow 是一个交互式的设计工具,它基于 有限状态机的理论,可以用来对复杂的事件驱动系统进行建模和仿真。Stateflow 与 Simulink 和 MATLAB 紧密集成,可以将 Stateflow 创建的复杂控制逻辑有效地结合到 Simulink 的模型中。 显示,清除变量显示,清除变量 who,whos 显示变量列表。whos 还可以列出变量的大小及数据类型。 clear 清除工作空间中的所有变量。 clear+变量名-只清除指定变量。 保存和恢复工作空间保存和恢复工作空间 1.保存工作空间save 把工作空间保存在二进制 MAT 文件中(整个内容) (1) save worksp1 把当前工作空间保存在 worksp1.mat 文件中。 (2) save worksp2 mydata1 mydata2 仅保存 mydata1,mydata2 两个变量到 worksp2.mat 文件中。 (3) File-save workspace As。 加载加载(恢复恢复)工作空间工作空间 load worksp1 当前工作空间与加载的工作空间具有相同的变量后, 加载的变量自动覆盖与原工作空间同 名的变量。 diary 指令指令 diary 指令的功能是创建一个日志文件,在这个文件中,能够把所有在 MATLAB 命令行键入的指令以 及在命令行窗口的输入保存下来。这个日志文件为纯文本格式,可以利用任何一种文本编辑器编辑这个文 件。在使用 diary 指令时,若不指定文件名,则 MATLAB 自动创建一个默认文件名 diary(注意,该文件没 有扩展名,为纯文本文件)的日志文件,并且进入到历史日志记录状态。在日志文件中将记录所有在命令行 窗口中键入的指令以及这些指令运行的结果。注意,diary 记录指令的功能也仅在执行 diary 指令之后的 MATLAB 会话中有效,一旦关闭了 MATLAB 再次启动时,则 diary 指令需要重新键入。 工作路径工作路径 MATLAB 的工作路径就是当前的路径,MATLAB 启动时采用默认的路径作为当前工作路径,这样所 有的 MATLAB 文件保存和读取都将从该路径下开始。在 Windows 平台下,MATLAB 提供了一个路径: $matlabrootwork,在 MATLAB 首次启动时,就会使用该路径作为当前的工作路径。 变量的特点变量的特点 新变量:自动建立变量并分配存储空间。 旧变量:更新其内容,有必要时重新分配存储空间。 变量的构成变量的构成 字母、数字和下划线。以字母开头,最长为 63 个字符,区分大小写。 矩阵元素的访问矩阵元素的访问 访问矩阵的元素也需要使用矩阵元素的索引,不过具有两种方式: 第一种方式是使用矩阵元素的行列全下标形式; 第二种方法是使用矩阵元素的单下标形式。 逻辑数据类型逻辑数据类型 所谓逻辑数据类型就是仅具有两个数值的一种数据类型, 其中, 一个数值为TRUE, 另外一个数值为FALSE。 在 MATLAB 中,参与逻辑运算或者关系运算的并不一定必须有逻辑类型的数据,任何数值都可以参与逻 辑运算。这时,MATLAB 将所有非零值看作逻辑真,将零值看作逻辑假。一般地,1 表示逻辑真,0 表示 逻辑假。 脚本文件脚本文件 脚本文件是一种简单的 M 文件,它没有输入输出,可以是一系列在命令行中执行的命令的集合,仅可 以操作工作空间中的变量或程序中新建的变量。 函数的程序结构函数的程序结构 一. 函数定义行 functiony= mean(x) 函数定义输出输入变量 关键字变量函数名 functionx,y,z=sphere(theta,phi,rho) M 文件中包含一个函数,并确定调用的参数及次序。 二. H1 行(帮助文本的首行) 函数定义后的第一行注释语句可用 help function_name 命令显示, 也可以用 lookfor 命令搜索其中字符。 三. 帮助文本 以%开头,详细说明这一函数,H1 行之后到函数体之前的注释,帮助文本,可用 help function_name 命令显示。 四. 函数体 完成指定功能的语句实体,包含所有计算和为输出参数赋值的代码。 m,n=size(x); if(m= =1)|(n= =1)|(c= =1&n= =1) error(Input must be a vector) end y=sum(x)/length(x) 五. 注释 %开头在行尾结束 H1 行与帮助文本都可以用 help 命令查看,其它注释都不可以用 help 查看。 脚本文件和函数文件的比较脚本文件和函数文件的比较 脚本文件函数文件 定义行无需定义行必须有定义行 输入/输出变量无有 数据传递直接访问基本工作 空间中的所有变量 通过输入变量获得输入数据, 通过输出变量提交结果 编程方法直接选取 MATLAB 中执行的语句 精心设计完成指定功能 用途重复操作MATLAB 功能扩展 函数文件去掉其第一行的定义行就转变成了脚本文件带来几个问题函数文件去掉其第一行的定义行就转变成了脚本文件带来几个问题 基本工作空间中与脚本文件中同名的变量会引起冲突。 使基本工作空间中变量数急剧增加,造成内存紧张。 编程时要细心考虑各个脚本文件所用到的变量。 创建字符串创建字符串 创建字符串时, 只要将字符串的内容用单引号包含起来就可以了, 若需要在字符串内容中包含单引号, 则需要在键入字符串内容时,连续键入两个单引号即可。 元胞数组元胞数组 元胞数组是 MATLAB 的一种特殊数据类型,可以将元胞数组看成作为一种无所不包的通用矩阵,或 者叫作广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有 不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞。和一般 的数值矩阵一样,元胞数组的内存空间也是动态分配的。元胞数组的维数不受限制,元胞数组可以是一维 的、二维的,甚至也可以是多维的。访问元胞数组的元素可以使用单下标或者全下标方式。胞数组可以是 实数组或复数组,也可以是字符型数组和结构数组,可以是二维的,也可以是多维的。 结构结构 结构是包含一组记录的数据类型,而记录则存储在相应的字段中,结构的字段可以是任意一种 MATLAB 数据类型的变量或者对象。结构类型的变量可以是一维的、二维的或者多维的数据,不过,在访 问结构类型数据的元素时,需要使用下标配合字段的形式。 知识点知识点 1、 MATLAB 中使用行矢量表示多项式的系数,行矢量中的各元素按照多项式的项的次数从高到低排列。 2、 私有函数在 MATLAB 中是指位于特定子目录 private 下的函数,私有函数仅可被父目录中函数调用, 其他目录中可以存在同名的私有函数。 3、 save 命令可将工作空间中的所有变量以二进制的格式保存到 matlab.mat 文件中,这些变量可由 load 命 令重新装入;save filename 可保存到指定的 filename.mat 文件中。 4、 在 MATLAB 中, 参与逻辑运算或者关系运算的并不一定必须有逻辑类型的数据, 任何数值都可以参与 逻辑运算。这时,MATLAB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论