资源描述
*,/,21,安徽财经大学,Anhui University of Finance&Economics,1959,Matlab,实验,(七),第七讲 MATLAB编程,第四章 MATLAB编程,第七讲 MATLAB编程,安徽财经大学,Anhui University of Finance&Economics,1959,安徽财经大学,Anhui University of Finance&Economics,1959,安徽财经大学,Anhui University of Finance&Economics,1959,安徽财经大学,Anhui University of Finance&Economics,1959,一、循环语句:,for,循环语句,计数循环方式:,调用格式为:,for,循环变量,=,初值,:,步长:终值,循环体语句,end,执行过程:将初值赋给循环变量,执行循环体语句;执行完一次循环之后,循环变量自增一个步长的值,然后再判断循环变量的值是否介于初值和终值之间,如果满足仍然执行循环体,直至不满足为止。,MATLAB,提供了两种循环方式,(,1,),for-end,循环(,2,),while-end,循环。,循环的嵌套调用格式为:,for,循环变量,1=,初值,1:,步长,1:,终值,1,for,循环变量,2=,初值,2:,步长,2:,终值,2,循环体语句,end,end,例,1.,矩阵 计算各行的长度,.,解:输入:,A=1,3,0;2,6,2;3,6,4;,for i=1:3,d=norm(A(i,:),end,例,1.,矩阵 计算各行的长度,.,结果为:,d=3.1623,d=6.6332,d=7.8102,不是矩阵,若继续运算就麻烦,.,若为矩阵只需将,d=norm(A(i,:),改成,d(i)=norm(A(i,:),执行过程:若表达式的值为真时,则执行循环体语句,执行后再判断表达式的值是否为真,直到表达式的值为假则跳出循环。,while,循环语句,条件循环方式,注意:,1.while,语句一般用于事先不能确定循环次数的情况。,2.while,语句以,end,作为结束标志,.,while,语句的一般调用格式为:,while,表达式,循环体语句,end,例,2.,用,while-end,循环求,1100,之间的和,.,解:输入:,sum=0;i=1;while i=100,sum=sum+i;,i=i+1;,e,nd,sum,二、条件控制语句:,if,表达式(,logical expression),执行语句,(,statement,),end,注意:在,if,和,logical expression,(,逻辑表达式,),之间要有一个空格。,statement,(,程序语句,),可以是一个命令,也可以是由逗号,分号隔开的若干命令或者是,r e t u r n s,。,MATLAB,提供了两种条件控制方式:,if,分支语句和,switch,分支语句。,if,分支语句:,在,MATLAB,中,,if,语句有,3,种调用格式,(a),单分支,if,语句调用格式为,其执行过程为:当表达式的值为真时,则执行语句体,执行完之后继续执行,if,语句的后继语句;否则跳过语句体直接执行,if,语句的后继语句。,(b),双分支,if,语句调用格式,(,if-else-end,语句,),if,表达式,语句体,1,;,else,语句体,2,;,end,其执行过程为:当表达式的值为真时,执行语句体,1,,否则执行语句体,2,;语句体,1,或语句体,2,执行后,再执行,if,语句的后继语句。,(c),多分支,if,语句调用格式,if,表达式,1,语句体,1,;,else if,表达式,2,语句体,2,;,else,语句体,3,;,end,其执行过程为:当表达式,1,的值为真时,执行语句体,1,,然后跳出继续执行,if,语句的后继语句;否则判断表达式,2,的值,为真则执行语句体,2,然后跳出继续执行,if,语句的后继语句;再否则,例,3.,计算例,1,中矩阵的第一列的和,若等于,6,,则从矩阵,A,中删除该列。,解:,A=1,3,0;2,6,2;3,6,4;,if sum(A(:,1)=6,A=A(:,2:3),end,结果为,A=,3 0,6 2,6 4,例,4.,对例,1,中的矩阵计算第二行的长度,若小于,20,,则从矩阵,A,中删除该行,.,解:,if norm(A(2,:)=20,A=A(1,:);A(3,:),else A=A(1,:);ones(1,3);A(3,:),end,switch,分支结构语句,switch,语句调用格式为:,switch,表达式,case,表达式,1,语句体,1,case,表达式,2,语句体,2,case,表达式,m,语句体,m,otherwise,语句体,m+1,end,其执行过程为:控制表达式的值与每一个,case,后面表达式的值比较,若与第,k,(,k,的取值为,1m,)个,case,后面的表达式,k,的值相等,就执行语句体,k,;,若都不相同,则执行,otherwise,下的语句体,m+1,。,练习,1,:,计算例,1,矩阵各列的长度,所得结果左乘矩阵,A.,解:,for i=1:3,d(i)=norm(A(:,i);,end,B=d*A,B=,35.1581 92.0578 35.8885,d,能否右乘矩阵,A,为什么?,练习,2,:,计算例,1,矩阵各列的长度,然后构造一个矩阵,D,,,使得,D,各行元素都是,A,对应列的长度,再右乘矩阵,A.,解:,for i=1:3,D(i,:)=norm(A(:,i),end,C=A*D,D=3.7417 3.7417 3.7417,9.0000 9.0000 9.0000,4.4721 4.4721 4.4721,我们学过,dist(A,B),计算,A,中每个行向量与,B,中每个列向量之间欧氏距离,,A,的行向量维数必须等于,B,的列向量维数,.,下面我们通过编程计算并与,dist(A,B),进行比较,.,例,6,:,A=1.14,1.78;1.18,1.96;1.20,1.86;1.26,2.00;,1.28,2.00;1.30,1.96;,B=1.24,1.72;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;,1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08;,计算,A,的每个行向量与,B,的每个行向量之间距离,.,解法一:,dist(A,B),,,结果是,6,by9,的矩阵第,i,行元素是,A,中第,i,行分别与,B,中各行的距离,.(i=1,2,6),解法二,.B1=B;for i=1:6,d1(i)=dist(A(i,:),B1(:,1);d5(i)=dist(A(i,:),B1(:,5);,d2(i)=dist(A(i,:),B1(:,2);d6(i)=dist(A(i,:),B1(:,6);d3(i)=dist(A(i,:),B1(:,3);d7(i)=dist(A(i,:),B1(:,7);,d4(i)=dist(A(i,:),B1(:,4);d8(i)=dist(A(i,:),B1(:,8);,d9(i)=dist(A(i,:),B1(:,9);end,d=d1;d2;d3;d4;d5;d6;d7;d8;d9,从上面的例子可知:直接利用,dist(A,B1),进行计算简单,但是当难以简单计算时,应该知道如何利用编程实现复杂计算,.,解法二:,A=1.14,1.78;1.18,1.96;1.20,1.86;1.26,2.00;,1.28,2.00;1.30,1.96;,B=1.24,1.72;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;,1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08;,for i=1:6,na,(i,:)=norm(A(i,:);end%,求,A,中各行范数,for k=1:9,nb,(k,:)=norm(B(k,:);end%,求,B,中各行范数,a=A./,na,(:,1:2);,将矩阵,A,各行向量单位化,b=B./,nb,(:,1:2);,将矩阵,B,各行向量单位化,解法一,:,直接调用命令,:,da,=,normr,(A);db=,normr,(B),例,7.,将例,6,中,A,的各行向量与,B,的每个行向量单位化,基本的关系运算符,逻辑运算,(大于),与(,&,),=,(大于等于),非,(,),0.,A=2,1,-2;1,4,-1;-2,-1,5;,u,v=,eig,(A),v=0.9264 0 0,0 3.3931 0,0 0 6.6805,(2)n,阶实对称矩阵,A,为正定矩阵的充要条件是:,A=2,1,-2;1,4,-1;-2,-1,5;,rref,(A),ans=1 0 0,0 1 0,0 0 1,解:我们用三种方法解题:,(3)n,阶实对称矩阵,A,为正定矩阵的充要条件是:,A,的顺序主子式大于零,A=2,1,-2;1,4,-1;-2,-1,5;,m,n=size(A);,for i=1:3,B=A(1:i,1:i);,h(i)=,det,(B);,end,h,h=2 7 21,由于矩阵,A,的三个顺序主子式的值分别为:,2 7 21,故矩阵,A,为正定矩阵,.,今后,在判别某矩阵是否为正定矩阵,可根据情况选择方法,.,
展开阅读全文