《第七讲 matlab编程.ppt》由会员分享,可在线阅读,更多相关《第七讲 matlab编程.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)一、循环语句:一、循环语句:forfor循环语句循环语句计数循环方式:计数循环方式:调用格式为:调用格式为:for for 循环变量循环变量=初值初值:步长:终值步长:终值 循环体语句循环体语句 endend执行过程:将初值赋给循环变量,执行循环体语句;执行过程:将初值赋给循环变量,执行循环体语句;执行完一次循环之后,循环变量自增一个步长的值,执行完一次循环之后,循环变量自增一个步长的值,然后再判断循环变量的值是否介于初值和终值之间,然后再判断循环变量的值是否介于初值和终值之间,如果满足仍然执行循环体,直至不满足为止。如果
2、满足仍然执行循环体,直至不满足为止。MATLAB提供了两种循环方式提供了两种循环方式(1 1)for-end 循环(循环(2 2)while-end循环。循环。4/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)循环的嵌套调用格式为:循环的嵌套调用格式为:for for 循环变量循环变量1=1=初值初值1:1:步长步长1:1:终值终值1 1 for for 循环变量循环变量2=2=初值初值2:2:步长步长2:2:终值终值2 2 循环体语句循环体语句 endend end end例例1.矩阵矩阵 计算各行的长度计算各行的长度.解:输入:解:输入:A=1,3,0;2,6,2;3
3、,6,4;for i=1:3,d=norm(A(i,:)end5/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)例例1.矩阵矩阵 计算各行的长度计算各行的长度.结果为:结果为:d=3.1623 d=6.6332 d=7.8102不是矩阵,若继续运算就麻烦不是矩阵,若继续运算就麻烦.若为矩阵只需将若为矩阵只需将d=norm(A(i,:)改成改成 d(i)=norm(A(i,:)6/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)执执行行过过程程:若若表表达达式式的的值值为为真真时时,则则执执行行循循环环体体语语句句,执执行行后后再再判判断断表表达达式式的
4、的值值是是否否为为真真,直直到到表达式的值为假则跳出循环。表达式的值为假则跳出循环。whilewhile循环语句循环语句条件循环方式条件循环方式注注意意:1.while1.while语语句句一一般般用用于于事事先先不不能能确确定定循循环环次次数的情况。数的情况。2.while2.while语句以语句以endend作为结束标志作为结束标志.whilewhile语句的一般调用格式为:语句的一般调用格式为:while while 表达式表达式 循环体语句循环体语句 endend7/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)例例2.2.用用while-end while-en
5、d 循环求循环求 11001100之间的和之间的和.解:输入:解:输入:sum=0;i=1;while i=100 sum=sum+i;i=i+1;e end sum8/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)二、条件控制语句:二、条件控制语句:if 表达式(表达式(logical expression)执行语句执行语句(statement)end 注意:在注意:在if和和logical expression(逻辑表达式逻辑表达式)之间要有之间要有一个空格。一个空格。statement(程序语句程序语句)可以是一个命令可以是一个命令,也可也可以是由逗号以是由逗号,分
6、号隔开的若干命令或者是分号隔开的若干命令或者是 r e t u r n s。MATLAB提供了两种条件控制方式:提供了两种条件控制方式:if分支语句分支语句和和 switch分支语句。分支语句。if分支语句:分支语句:在在MATLAB中,中,if语句有语句有3种调用格式种调用格式(a)(a)单分支单分支ifif语句调用格式为语句调用格式为 9/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)其执行过程为:当表达式的值为真时,则执行语句其执行过程为:当表达式的值为真时,则执行语句体,执行完之后继续执行体,执行完之后继续执行if语句的后继语句;否则跳语句的后继语句;否则跳过语句
7、体直接执行过语句体直接执行if语句的后继语句。语句的后继语句。(b)双分支双分支if语句调用格式语句调用格式(if-else-end if-else-end 语句语句)if if 表达式表达式 语句体语句体1 1;elseelse 语句体语句体2 2;endend其执行过程为:当表达式的值为真时,执行语句体其执行过程为:当表达式的值为真时,执行语句体1,否则执行语句体,否则执行语句体2;语句体;语句体1或语句体或语句体2执行后,再执行后,再执行执行if语句的后继语句。语句的后继语句。10/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)(c)(c)多分支多分支ifif语句调
8、用格式语句调用格式if if 表达式表达式1 1语句体语句体1 1;else if else if 表达式表达式2 2语句体语句体2 2;elseelse语句体语句体3 3;endend其执行过程为:当表达式其执行过程为:当表达式1的值为真时,执行语句体的值为真时,执行语句体1,然后跳出继续执行,然后跳出继续执行if语句的后继语句;否则判断表语句的后继语句;否则判断表达式达式2的值,为真则执行语句体的值,为真则执行语句体2然后跳出继续执行然后跳出继续执行if语句的后继语句;再否则语句的后继语句;再否则 11/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)例例3.计算例计算
9、例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,:)end14/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)swit
10、chswitch分支结构语句分支结构语句switch语句调用格式为:语句调用格式为:switch switch 表达式表达式 case case 表达式表达式1 1 语句体语句体1 1 case case 表达式表达式2 2 语句体语句体2 2 case case 表达式表达式m m 语句体语句体m m otherwise otherwise 语句体语句体m+1m+1 end end其其执执行行过过程程为为:控控制制表表达达式式的的值值与与每每一一个个case后后面面表表达达式式的的值值比比较较,若若与与第第k(k的的取取值值为为1m)个个case后后面面的的表表达达式式k的的值值相相等等,就
11、就执执行行语语句句体体k;若若都都不不相相同同,则则执执行行otherwise下下的的语句体语句体m+1。15/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)练习练习1:计算例计算例1矩阵各列的长度,所得结果左乘矩阵矩阵各列的长度,所得结果左乘矩阵A.解:解:for i=1:3,d(i)=norm(A(:,i);endB=d*A,B=35.1581 92.0578 35.8885d能否右乘矩阵能否右乘矩阵A,为什么?为什么?练习练习2:计算例计算例1矩阵各列的长度,然后构造一个矩阵矩阵各列的长度,然后构造一个矩阵D,使得使得D各行元素都是各行元素都是A对应列的长度,再右乘
12、矩阵对应列的长度,再右乘矩阵A.解:解:for i=1:3,D(i,:)=norm(A(:,i),endC=A*D,D=3.7417 3.7417 3.7417 9.0000 9.0000 9.0000 4.4721 4.4721 4.472116/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)我们学过我们学过dist(A,B)计算计算A中每个行向量与中每个行向量与B中每个列向量之间欧氏距离,中每个列向量之间欧氏距离,A的行向量维的行向量维数必须等于数必须等于B的列向量维数的列向量维数.下面我们通过编下面我们通过编程计算并与程计算并与dist(A,B)进行比较进行比较.例
13、例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的每个行向量之间距离的每个行向量之间距离.17/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)解法一:解法一:dist(A,B),结果是结果是6by9的矩阵第的矩阵第i行元素行元素是是A中第中第i行分别与行分别与B中各行的
14、距离中各行的距离.(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
15、;d8;d9 从上面的例子可知:直接利用从上面的例子可知:直接利用dist(A,B1)进进行计算简单,但是当难以简单计算时,应该知行计算简单,但是当难以简单计算时,应该知道如何利用编程实现复杂计算道如何利用编程实现复杂计算.18/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)解法二:解法二: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
16、;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的每个行向量单位化的每个行向量单位化19/21MatlabMatlab实验实验实验实验(七)(七)(七)(七
17、)基本的关系运算符逻辑运算 (大于)与(&)=(大于等于)非()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解:我们用三种方法解题:解:我们用三种方法解题:21/21MatlabMatlab实验实验实验实验(七)(七)(七)(七)(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);endhh=2 7 21由于矩阵由于矩阵A的三个顺序主子式的三个顺序主子式的值分别为:的值分别为:2 7 21故矩阵故矩阵A为正定矩阵为正定矩阵.今后,在判别某矩阵是否为正定矩今后,在判别某矩阵是否为正定矩阵,可根据情况选择方法阵,可根据情况选择方法.
限制150内