1、Matlab实验三复习资料实验三 MATLAB语言的程序设计 一、实验目的: 1、熟悉MATLAB程序编辑与设计环境2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识:1、程序流程控制语句 for循环结构语法:for i初值:增量:终值 语句1 语句n end 说明:1i初值:终值,则增量为1。 2初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执
2、行循环体语句一次、在反复执行时,每次都要进行判断。若表达式的值为假,则程序执行end之后的语句。2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值。)3、while循环也可以嵌套、其结构如下: while逻辑表达式1 循环体语句1 while逻辑表达式2循环体语句2 end 循环体语句3 end if-else-end分支结构if 表达式 1 语句1 else if 表达式 2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是
3、一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。2else if表达式2与else为可选项,这两条语句可依据具体情况取舍。3注意:每一个if都对应一个end,即有几个if,记就应有几个end。switch-case结构语法:switch表达式case常量表达式1 语句组1 case常量表达式2 语句组2 otherwise 语句组n end 说明:1switch后面的表达式可以是任何类型,如数字、字符串等。2当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执
4、行语句。程序流程控制指令break、return、pause 2、函数文件的结构和编写方法 函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。 M函数文件的结构(1) 函数定义行(function) (2) H1行(函数帮助文本的第一行) (3) 函数帮助文本(4) 函数体(5) 注释函数文件编写后,保存时,其文件名必须与函数名相同。注意:函数名不要与MATLAB自身的函数命令相同。三、实验内容:2、用for循环语句实现求1100的和编程: sum=0;for i=1:100 sum=sum+i;endsum运行结果: ljiasum = 50503、用for循环语句实
5、现编写一个求阶乘的函数文件。编程:function y=jcheng(n)y=1;for i=1:n y=y*i;endy运行结果:假设n=5 jcheng(5)y = 120ans = 1204、找到一个n! 10100的值(利用上题的阶乘函数文件)编程:i=1;while(1) y=jcheng(i); if y10100 break; end i=i+1;endi运行结果: zhaony = 1y = 2y = 6y = 24y = 120y = 720y = 5040y = 40320y = 362880y = 3628800y = 39916800y = 479001600y = 6
6、.2270e+009y = 8.7178e+010y = 1.3077e+012y = 2.0923e+013y = 3.5569e+014y = 6.4024e+015y = 1.2165e+017y = 2.4329e+018y = 5.1091e+019y = 1.1240e+021y = 2.5852e+022y = 6.2045e+023y = 1.5511e+025y = 4.0329e+026y = 1.0889e+028y = 3.0489e+029y = 8.8418e+030y = 2.6525e+032y = 8.2228e+033y = 2.6313e+035y = 8
7、.6833e+036y = 2.9523e+038y = 1.0333e+040y = 3.7199e+041y = 1.3764e+043y = 5.2302e+044y = 2.0398e+046y = 8.1592e+047y = 3.3453e+049y = 1.4050e+051y = 6.0415e+052y = 2.6583e+054y = 1.1962e+056y = 5.5026e+057y = 2.5862e+059y = 1.2414e+061y = 6.0828e+062y = 3.0414e+064y = 1.5511e+066y = 8.0658e+067y = 4
8、.2749e+069y = 2.3084e+071y = 1.2696e+073y = 7.1100e+074y = 4.0527e+076y = 2.3506e+078y = 1.3868e+080y = 8.3210e+081y = 5.0758e+083y = 3.1470e+085y = 1.9826e+087y = 1.2689e+089y = 8.2477e+090y = 5.4434e+092y = 3.6471e+094y = 2.4800e+096y = 1.7112e+098y = 1.1979e+100i = 705、编写一个乘法表(99)编程:for i=1:9 A=;
9、 for j=1:i; A=A,sprintf(%dx%d=%d ,j,i,i*j); end disp(A)end运行结果: cfb1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56
10、8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=816、判断y向量的元素属于3n、3n+1或3n +2,设y = 3,5, 7, 9, 11,16。编程:假设:将3n放进数组A,将3n+1放进数组B,将3n+2放进数组C。y=3 5 7 9 11 16;A=;B=;C=;j=1;k=1;m=1;for i=1:6 x=rem(y(i),3); if x=0 A(j)=y(i);j=j+1; end if x=1 B(k)=y(i);k=k+1; end if x=2 C(m)=y(i);m=m+1; enden
11、ddisp(A)disp(B)disp(C)运行结果: yush 3 9 7 16 5 117、已知一维数组A=2,4,5,8,10、B=4, 9,6, 7, 4,用for循环语句实现。求和函数可用sum().编程:A=2 4 5 8 10;B=4 9 6 7 4;C=;y=0;for i=1:5 C(i)=(A(i)*B(5-i+1); y=y+C(i);endy运行结果: timu7y = 1788、(1)编写求解一维数组平均值的函数文件。(2)编写求解二维数组平均值的函数文件。编程1:function y=ywjz(A)x=0;n=numel(A);for i=1:n x=x+A(i);
12、endv=x/n;运行结果: y=ywjz(1 2 3 4 5)y= 3编程2:function y=ewjz(A)x=0;n=numel(A);for i=1:n x=x+A(i);endy=x/n;运行结果: y=ewjz(2 3;4 5;6 7;)y =4.5000调用验证:A=1 3 3;5 5 7;y=ewjz(A);y aay = 49、编写验证魔方矩阵的函数文件,输出要求如下: (1) 如果输入矩阵的维数小于3,输出显示error (2) 如果输入矩阵的不是方阵,输出显示the size of matrix X must be N-by-N matrix (3) 显示行、列和及其对角线求和后的值,并判断其和是否相同,若不同,显示No,相同显示Yes编程:function yanzh(x)r,c=size(x);if r=c disp(the size of matrix X must be N-by-N matrix)else if r yanzh(8 1 6;3 5 7;4 9 2;)yes yanzh(8 1 6;3 5 7;)the size of matrix X must be N-by-N matrixno yanzh(8 6;3 5;)eroorno yanzh(8 2 6;3 5 7;4 9 2;)no
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1