Matlab第五讲matlab语言的程序结构与其它高级语言是一致的,分为顺序结构,循环结构,分支结构。(1).顺序结构——依次顺序执行程序的各条语句(2).循环结构——被重复执行的一组语句,循环是计算机解决问题的主要手段循环语句主要有:for—endwhile—end循环5.1matlab的程序结构for—end语法为:fori=表达式(表达式为一个向量)可执行语句end一个简单的for循环示例:fori=1:10%I依次取1,2,…,10x(i)=i;%对每个i值,重复执行由该指令构成的循环体endfor循环应当注意的一些方面1.for循环可以嵌套;2.循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。for循环嵌套例子例:构造一个三行三列的矩阵a,使aij=i+jfori=1:3forj=1:3a(i,j)=i+j;endendaa=234345456利用break跳出所在级别的循环例:fori=1:3a=i;breakendaa=1while—end循环while循环将循环体中的语句循环执行不定次数。语法为:while表达式循环体语句end表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;只要表达式的值非0,继续循环;直到表达式值为0,循环停止。例:用while循环求1~100间整数的和sums=0;i=1;whilei=100sums=sums+i;i=i+1;endsumssums=5050可以利用break命令跳出while循环while循环可按需要嵌套。分支结构分支结构——根据一定条件来执行的各条语句。if—else—end语句有3种形式if表达式执行语句endif表达式———是语句1else————否语句2endif表达式1———多分支语句1elseif表达式2语句2elseif表达式3语句3···else语句nend在条件表达式中,通常都是由关系操作符,,=,=,==,~=等逻辑操作符&(与),|(或),~(非)等逻辑函数:isequal——若是相等则为真isempty——若是空矩阵则为真isstr——若是字符串则为真一个简单的分支结构。t=10;number=12;sums=0;ifnumber8sums=number*t;endsumssums=120例题:Fibonacci数组的元素满足Fibonacci规则:ak=ak-2+ak-1,(k=3,4,…);且a1=a2=1。1.求该数组中第一个大于10000的元素。编函数fibonacci1.m,调用格式[a,k]=fibonacci1(n)求fibnacci数列中第一个大于n的元素a和它的序号kfunction[a,k]=fibonacci1(n)%求fibnacci数列中第一个大于n的数a和它的序号ka1=1;a2=1;a=a1+a2;k=3;%赋初值whilea=na1=a2;a2=a;a=a1+a2;k=k+1;end调用,得到fibonacci数列中第一个大于10000的元素是10946它是fibonacci数列中第21个元素2.求该数组中大于10000小于100000的元素和序号。编函数fibonacci2.m,格式[fib,id]=fibonacci2(n,m)求fibnacci数列中大于n小于m的元素向量fib和对应的序号向量idfunction[fib,id]=fibonacci2(n,m)%求fibnacci数列中大于n小于m的元素向量fib和序号ida1=1;a2=1;a=a1+a2;k=3;%下面求得是第一个大于n的元素a,和它的序号kwhilea=na1=a2;a2=a;a=a1+a2;k=k+1;end%注意到这个函数的前半部分与刚才的函数fibonacci1一样求得是第一个大%于n的元素a,和它的序号k%后半部分求fibnacci数列中大于n小于m的元素向量fib和序号idfib(1)=a;%fib的第一个元素是fibnacci数列中第一个大于等于n的元素aid(1)=k;%id的第一个元素是fibnacci数列中第一个大于n的元素a的序号whileama1=a2;a2=a;a=a1+a2;k=k+1;i=k-id(1)+1;%这一步是什么意思?fib(i)=a;id(i)=k;end%fib最后一个元素大于等于m,所以应该删掉fib(end)=[];id(end)=[];调用fibonacci2,得到fibonacci数列中大于10000小于100000的元素向量和它们的序号练习1.下面的题分别用for循环和while循环两种方法编写m函数1).建立一个含有六个元素的一维数组x,使x的第i个元素等于1/i2).求sums=1!+2!+…+n!,当n=6,8,10的值。2.编写m函数,计算函数值x(x1)2x-1(1x10)3x-11(x=10)3.利用公式求的近似值,直到最后一项小于4.列出所有水仙花数,水仙花数是一个三位数,其各位数字立方和等于该数本身.例如:(显示某个变量用disp,比如变量x=2,disp(x),返回x的值2)5.根据y=1+1/3+1/5+…+1/(2n-1)求y3时的最大n值、此时的y值715131143333511536106.按递推公式为奇数,为偶数kkkkkxxxxx13,21生成的数据构成一个数组x要求:分别用x(1)=27和x(1)=837799开始(1)x(k)为1或者k=500时过程终止(2)过程终止后提取x中的非零元素构造一个新的数组y