资源描述
广州大学学生实验报告开课学院及实验室:机械与电气工程学院 计算机楼 301室 2014 年 10 月 30 日 学 院机械与电气工程学院年级、专业、班姓名学号实验课程名称MATLAB程序设计成绩实验项目名称实验一 基础准备及入门指 导 教 师一、实验目的1、掌握一维数组的创建方法;掌握一维数组子数组的寻访和赋值方法;2、掌握二维数组的创建方法;掌握二维数组子数组的寻访和赋值方法;3、掌握数组的各种运算,理解数组运算和矩阵运算的区别。二、实验原理1、数组的创建和寻访数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。自MATLAB5.x版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB最重要的一种内建数据类型(Built-in Data Type),而数组运算就是定义在这种数据结构上的方法(Method)。数组是指实数或复数组成的长方阵列(Array),可以是一维、二维、三维或更高的维数。不同维数的数组创建和访问的方法有相同之处,也有不同之处。一维数组的创建方法有:(1)逐个输入法;(2)冒号生成法;(3)定数线性采样法;(4)定数对数生成法。对于一维数组的寻访,常用的有以下几种类型:(1)x(3); (2)x(1 2 5) ;(3)x(1:3) ;(4)x(3:end) ;(5)x(3:-1:1) ;(6)x(find(x0.5) ;(7)x(1 2 3 4 4 3 2 1) 。在这里假设x是长度为5的一维数组。二维数组则是由实数或复数排列称矩形而成。二维数组和矩阵在数据结构上相同;一个矩形阵列是二维数组或矩阵取决于所使用的运算符号。二维数组的创建方法有:(1)直接输入法,用于生成较小数组;(2)利用M文件创建和保存数组,用于经常要调用的数组,尤其是较大而且复杂的数组。对于二维数组的寻访,常用的有以下几种类型:(1)全下标标识法,如A(2,3);(2)单下标标识法,如A(10),这种方法比较少用;(3)单下标全元素标识,如A(:),指的是A的各列按先左后右的次序、首尾相接排成“一维长列”后,得到的一维数组的全部元素,其结果是一个一维列数组;类似地,也需注意A(r,:)、A(:,c)的含义。(4)“逻辑1”标识。在MATLAB中,提供了相关的函数用作常用的标准数组的生成,如全0数组、全1数组、单位矩阵、对角阵、均匀分布的随机数组、正态分布的随机数组等,都有相关的生成函数。对于一些数组的特殊操作,MATLAB也提供了相应的操作函数。如提取对角元素或生成对角阵、逆时针旋转二维数组90度、提取数组下三角部分、提取数组上三角部分等,都有相应的函数。在应用中注意利用这些函数,可以事半功倍。2、数组运算数组运算是指无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素平等地实施同样的操作。数组运算包括加、减、乘、除、乘方等,除加减外,数组之间进行乘、除、乘方都必须在运算符号前加“.”,否则视为矩阵运算。此外,数组运算还包括转置、关系运算和逻辑运算。除了以运算符号执行数组运算外,也可以对数组施加函数,以函数形式进行数组运算。如对数组X执行函数f的运算:,其中X为m行n列的数组。执行数组运算的常用函数有三角函数和双曲函数、指数函数、复数函数、圆整函数和求余函数、坐标变换函数等。三、实验内容1、一维数组的创建 (1)、利用逐个输入法、冒号生成法以及定数线性采样法创建以下一维数组:X1=1,2,3,4,5,6,7,8,9,10(2)、利用冒号生成法创建以下数组: X2=(1,2,3,4,9,8,7,6,5)(3)、利用定数对数生成法创建一个第一个元素为10,最后一个元素为100,元素个数为51的一维数组X3。2、 一维数组子数组的寻访和赋值 以冒号生成法创建一个第一个元素为0,步长为0.1,最后一个元素为2的一维数组X4,并写出寻访或赋值的以下指令:a、 寻访X4的第6个元素;b、 同时寻访X4的第2、5、7个元素;c、 寻访前3个元素组成的子数组;d、 寻访除前3个元素外的全部的其他元素;e、 由后三个元素倒排构成的子数组;f、 由大于0.5的元素构成的子数组;g、 把第三个元素重新赋值为0;把当前x数组的第一、四个元素都赋值为1。3、二维数组的创建,子数组的寻访和赋值创建一个M文件(文件名为myMatrix.m),定义一个二维数组A,第一行为11至15、30至26共10个元素,第二行为110共10个元素。然后运行改M文件,生成数组AM,并按以下方式寻访该数组:(1) 寻访A的第一行;(2) 寻访A的第三列;(3) 同时寻访A的第三列和第五列;(4) 把A的各列按自左至右的次序,首尾相接生成一个“一维长列”;(5) 把A的第1行第1列、第2行第2列以及第1行第5列的元素重新赋值为10、20、30;(6) 把A的第二行赋值为1120。4、标准数组的生成和数组操作函数生成以下数组或矩阵:(1)长度为4的全1行数组和44的全1行数组;(2)5阶单位阵;(3)生成一矩阵A,第一行为1、2,第二行为3、4;并使用diag函数生成A的对角线元素所组成的对角阵。(4)生成一维数组A,其值为110,并使用reshape函数把其重排成25的数组B;(5)使用flipdim和fliplr函数对B进行翻转操作,从返回结果观察和总结各个函数的作用。注:flipdim的调用方式为:flipdim(B,1)和flipdim(B,2);其他均为function(B).5、数组运算和矩阵运算生成以下矩阵,并进行以下计算:(1) B的第二列乘以A的第一列;(2) 使用MATLAB帮助系统查阅max函数的使用方法,并使用它求解B中的第二列与A中的第一列逐行元素相乘所得矢量中的最大值。提示:ln函数在matlab中为log6、多项式的表达方式及其操作(1) 求根为5,2i,2i,2,3的对应线性方程表达式。(2) 求以下有理分式部分分式展开式,写出求解代码,并根据返回结果写出展开式的数学表达式(3) 使用roots函数求方程3x7+2x-1=0的根。四、实验过程、结果(程序和运行结果截屏)和分析1、一维数组的创建 (1)、利用逐个输入法、冒号生成法以及定数线性采样法创建以下一维数组:X1=1,2,3,4,5,6,7,8,9,10(2)、利用冒号生成法创建以下数组: X2=(1,2,3,4,9,8,7,6,5)(3)、利用定数对数生成法创建一个第一个元素为10,最后一个元素为100,元素个数为51的一维数组X3。 X1=1,2,3,4,5,6,7,8,9,10X1 = 1 2 3 4 5 6 7 8 9 10 X2=1:4,9:-1:5X2 = 1 2 3 4 9 8 7 6 5 X3=logspace(1,2,51)X3 = Columns 1 through 7 10.0000 10.4713 10.9648 11.4815 12.0226 12.5893 13.1826 Columns 8 through 14 13.8038 14.4544 15.1356 15.8489 16.5959 17.3780 18.1970 Columns 15 through 21 19.0546 19.9526 20.8930 21.8776 22.9087 23.9883 25.1189 Columns 22 through 28 26.3027 27.5423 28.8403 30.1995 31.6228 33.1131 34.6737 Columns 29 through 35 36.3078 38.0189 39.8107 41.6869 43.6516 45.7088 47.8630 Columns 36 through 42 50.1187 52.4807 54.9541 57.5440 60.2560 63.0957 66.0693 Columns 43 through 49 69.1831 72.4436 75.8578 79.4328 83.1764 87.0964 91.2011 Columns 50 through 51 95.4993 100.00002.一维数组子数组的寻访和赋值 以冒号生成法创建一个第一个元素为0,步长为0.1,最后一个元素为2的一维数组X4,并写出寻访或赋值的以下指令:a.寻访X4的第6个元素;b.同时寻访X4的第2、5、7个元素;c.寻访前3个元素组成的子数组;d.寻访除前3个元素外的全部的其他元素;e.由后三个元素倒排构成的子数组;f.由大于0.5的元素构成的子数组;g.把第三个元素重新赋值为0;h.把当前x数组的第一、四个元素都赋值为1。 X4=0:0.1:2X4 = Columns 1 through 7 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 Columns 8 through 14 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000 Columns 15 through 21 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 X4(6)ans = 0.5000 X4(2 5 7)ans = 0.1000 0.4000 0.6000X4(1:3)ans = 0 0.1000 0.2000 X4(4:end)ans = Columns 1 through 6 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 Columns 7 through 12 0.9000 1.0000 1.1000 1.2000 1.3000 1.4000 Columns 13 through 181.5000 1.6000 1.7000 1.8000 1.9000 2.0000 X4(end:-1:end-2)ans =2.0000 1.9000 1.8000 X4(find(X40.5)ans = Columns 1 through 8 0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000 Columns 9 through 15 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 X4(3)=0X4 = Columns 1 through 6 0 0.1000 0 0.3000 0.4000 0.5000 Columns 7 through 12 0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 Columns 13 through 18 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 Columns 19 through 21 1.8000 1.9000 2.0000 X4(1 4)=(1,1)X4 = Columns 1 through 8 1.0000 0.1000 0.2000 1.0000 0.4000 0.5000 0.6000 0.7000 Columns 9 through 16 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 Columns 17 through 21 1.6000 1.7000 1.8000 1.9000 2.00003、二维数组的创建,子数组的寻访和赋值创建一个M文件(文件名为myMatrix.m),定义一个二维数组A,第一行为11至15、30至26共10个元素,第二行为110共10个元素。然后运行改M文件,生成数组AM,并按以下方式寻访该数组:(7) 寻访A的第一行;(8) 寻访A的第三列;(9) 同时寻访A的第三列和第五列;(10) 把A的各列按自左至右的次序,首尾相接生成一个“一维长列”;(11) 把A的第1行第1列、第2行第2列以及第1行第5列的元素重新赋值为10、20、30;(12) 把A的第二行赋值为1120。A=11:15,30:-1:26;1:10A(1,:)A(:,3)A(:,3,5)reshape(A,1,)A(1 12 5)=(10 20 30)A(2,:)=11:20A = 11 12 13 14 15 30 29 28 27 26 1 2 3 4 5 6 7 8 9 10ans =11 12 13 14 15 30 29 28 27 26ans = 13 3ans = 13 15 3 5ans = Columns 1 through 13 11 12 13 14 15 30 29 28 27 26 1 2 3 Columns 14 through 20 4 5 6 7 8 9 10A = 10 12 30 14 15 30 29 28 27 26 1 2 3 4 5 20 7 8 9 10A = 10 12 30 14 15 30 29 28 27 2611 12 13 14 15 16 17 18 19 204、标准数组的生成和数组操作函数生成以下数组或矩阵:(1)长度为4的全1行数组和44的全1行数组;(2)5阶单位阵;(3)生成一矩阵A,第一行为1、2,第二行为3、4;并使用diag函数生成A的对角线元素所组成的对角阵。(4)生成一维数组A,其值为110,并使用reshape函数把其重排成25的数组B;(5)使用flipdim和fliplr函数对B进行翻转操作,从返回结果观察和总结各个函数的作用。注:flipdim的调用方式为:flipdim(B,1)和flipdim(B,2);其他均为function(B). ones(1,4)ans = 1 1 1 1 ones(4)ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 eye(5)ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 A=1,2;3,4A = 1 2 3 4 B=diag(A)B = 1 4 A=1:10A = 1 2 3 4 5 6 7 8 9 10 B=reshape(A,2,5)B = 1 3 5 7 9 2 4 6 8 10 flipdim(B,1)ans = 2 4 6 8 10 1 3 5 7 9 flipdim(B,2)ans = 9 7 5 3 1 10 8 6 4 2 fliplr(B)ans = 9 7 5 3 1 10 8 6 4 25、数组运算和矩阵运算生成以下矩阵,并进行以下计算:(3) B的第二列乘以A的第一列;(4) 使用MATLAB帮助系统查阅max函数的使用方法,并使用它求解B中的第二列与A中的第一列逐行元素相乘所得矢量中的最大值。提示:ln函数在matlab中为log A=1 4 2;2 4 100;7 9 7;3 pi 42A = 1.0000 4.0000 2.0000 2.0000 4.0000 100.0000 7.0000 9.0000 7.0000 3.0000 3.1416 42.0000 B=log(A)B = 0 1.3863 0.6931 0.6931 1.3863 4.6052 1.9459 2.1972 1.9459 1.0986 1.1447 3.7377 C=B(:,2).*A(:,1)C = 1.3863 2.7726 15.38063.4342 y=max(C)y = 15.3806 A=1 4 2;2 4 100;7 9 7;3 pi 42A = 1.0000 4.0000 2.0000 2.0000 4.0000 100.0000 7.0000 9.0000 7.0000 3.0000 3.1416 42.0000 B=log(A)B = 0 1.3863 0.6931 0.6931 1.3863 4.6052 1.9459 2.1972 1.9459 1.0986 1.1447 3.7377 C=B(:,2).*A(:,1)C = 1.3863 2.7726 15.38063.4342 y=max(C)y = 15.38066、多项式的表达方式及其操作(4) 求根为5,2i,2i,2,3的对应线性方程表达式。(5) 求以下有理分式部分分式展开式,写出求解代码,并根据返回结果写出展开式的数学表达式(6) 使用roots函数求方程3x7+2x-1=0的根。(1) x=5,2+i,2-i,2,3; A=poly(x)A =. 1 -14 76 -204 275 -150(2) A=1,0,1,0,1,1; B=1,1,-2,1; P,r=deconv(A,B)P = 1 -1 4r = 0 0 0 -7 10 -3 fx=poly2str(P,x)fx = x2 - 1 x + 4(3) P=3,0,0,0,0,0,2,-1; x=roots(P)x = -0.8756 + 0.4740i -0.8756 - 0.4740i -0.0740 + 0.9556i -0.0740 - 0.9556i 0.7046 + 0.5007i 0.7046 - 0.5007i 0.4898 + 0.0000i五、实验心得本次实验中初步接触了数组与矩阵的创建和操作。在实验过程中,由于对公式不熟悉,花费了很多时间,但比第一次做感觉轻松很多。我总结出做该课程需要十分细心,特别要注意标点符号的大小写,稍微弄错就无法得出正确结果。同时,做题过程我发现matlab与C语言相比有相同点,也有很大不同,比如分号的使用,因此不能完全用C语言的思想做该课程。通过这次做报告,我对这门课程的兴趣更加浓烈了,但也发现对这门课程了解太少,以后需要多花时间学习,多动手操作以取得更大进步。
展开阅读全文