《Matlab编程入门:实例讲解和讨论.ppt》由会员分享,可在线阅读,更多相关《Matlab编程入门:实例讲解和讨论.ppt(16页珍藏版)》请在三一办公上搜索。
1、Matlab 编程:实例讲解和讨论,主讲老师:闫培光 电子科学与技术学院,几个函数的用法:find、tic和toc,等(掌握)结题实例和讨论(重点)编写高效编程代码(掌握),主要内容,一、几个函数的用法(掌握),find:找到符合条件的元素所在的位置当作用在矩阵A上,它将找到A中满足条件的元素的角标(是单下标形式),x=nan,nan,1,2,inf,5,nan,inf;i=find(isnan(x)|isinf(x);%Find bad elements in xx(i)=;%and delete them,i=find(isnan(x)%Keep those elements,x(isna
2、n(x)|isinf(x)=;%Delete bad elements,tic和toc用来得到程序运行所花费时间,二、实例讲解和讨论,第1节If的使用,输入三角形的三条边,求面积。【数学基础:当输入边长A(1),A(2),A(3)满足关系任意两边之和大于第三边时能够构成三角形,三角形面积等于s=sqrt(p*(p-A(1)*(p-A(2)*(p-A(3);其中 p=(A(1)+A(2)+A(3)/2;】,A=input(请输入三角形的三条边:);if A(1)+A(2)A(3)else disp(不能构成一个三角形。)end,例题:将A矩阵用for循环写出来,A=1 2 3 4 5 2 3 4
3、 5 6 3 4 5 6 7 4 5 6 7 8,说明:For循环更倾向于在已知计算步数的情况下使用,while更多应用在已知条件满足情况下的循环。相比之下,while循环会更加快速的收敛。,二、实例讲解和讨论第2节:for和while的使用,讨论题:如何编制程序?找出A矩阵中值等于5的元素所在位置?,sum=0;cnt=0;val=input(Enter a number(end in 0):);while(val=0)sum=sum+val;cnt=cnt+1;val=input(Enter a number(end in 0):);end if(cnt 0)sum mean=sum/cn
4、t end,例题:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和,s=1;n=100:500;for i=1:length(n)if rem(n(i),21)=0 m(s)=n(i);s=s+1;continue,endif s=6 break endenddisp(m),例题:求100,500之间前5个能被21整除的整数。,请改成用while循环编程求解?,更简洁的方法?,n=100;a=ones(1,n);for i=3:n a(i)=a(i-2)+a(i-1);if a(i)10000 a(i),break;endenddisp(i),例题:用for循环指令来寻找Fi
5、bonacc数组中第一个大于10000的元素:a(1)=1,a(2)=1,a(i)=a(i-2)+a(i-1),for和while可以用来迭代(重要),%求1,2.,100的和 s=0;for i=1:100,s=s+i;end disp(s);,如何来求解数的阶乘?如何使用while来做循环?,已知 y=1+1/3+1/5+1/2n-1,当n=100时,求y的值?,程序阅读,a=zeros(1,80000);%Preallocationb=zeros(1,80000);a(1)=1;b(1)=0;for k=2:80000a(k)=0.99803*a(k-1)-0.06279*b(k-1);
6、b(k)=0.06279*a(k-1)+0.99803*b(k-1);end,编写高效编程代码(掌握),在程序编制时,如果变量的大小随着计算会扩展,预先给变量设定好尺寸会使得代码更加高效,clear,tica=zeros(1,10000);%Preallocatecount=0;for k=1:10000v=exp(rand(1)*rand(1);if v 0.5%Conditionally add to arraycount=count+1;a(count)=v;endenda=a(1:count);%Trim the resulttoc,在实际MATLAB编程中,采用循环语句会降低其执行速
7、度,用其内在函数批量处理大矩阵可以有效提高计算速度,已知 y=1+1/3+1/5+1/2n-1,当n=100时,求y的值?,n=100;i=1:2:2*n-1;y=sum(1./i);,矢量化运算(1),矢量化运算(2),function d=minDistance(x,y,z)%Find the min distance between a set of points and the originnPoints=length(x);d=zeros(nPoints,1);%Preallocatefor k=1:nPoints%Compute distance for every pointd(k)=sqrt(x(k)2+y(k)2+z(k)2);endd=min(d);%Get the minimum distance,function d=minDistance(x,y,z)%Find the min distance between a set of points and the origind=sqrt(x.2+y.2+z.2);%Compute distance for every pointd=min(d);%Get the minimum distance,更多的知识请参阅“编写高效的Matlab代码.pdf”,