资源描述:
《Matlab编程入门:实例讲解和讨论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Matlab编程:实例讲解和讨论主讲老师:闫培光电子科学与技术学院yanpg@szu.edu.cn几个函数的用法:find、tic和toc,等(掌握)结题实例和讨论(重点)编写高效编程代码(掌握)主要内容一、几个函数的用法(掌握)find:找到符合条件的元素所在的位置当作用在矩阵A上,它将找到A中满足条件的元素的角标(是单下标形式)x=[nan,nan,1,2,inf,5,nan,inf];i=find(isnan(x)
2、isinf(x));%Findbadelementsinxx(i)=[];%anddeletethemi=find(˜isnan(x)&˜i
3、sinf(x));%FindelementsthatarenotNaNandnotinfinitex=x(i);%Keepthoseelementsx(isnan(x)
4、isinf(x))=[];%Deletebadelementstic和toc用来得到程序运行所花费时间二、实例讲解和讨论例:编写m函数,当输入一个变量x时能自动根据x值来计算函数值x(x<1)2x-1(1=10)第1节——If的使用输入三角形的三条边,求面积。【数学基础:当输入边长A(1),A(2),A(3)满足关系任意两边之和大于第三边时能够构成三角形,三角形面积等
5、于s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));其中p=(A(1)+A(2)+A(3))/2;】A=input('请输入三角形的三条边:');ifA(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1)p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));disp(s);elsedisp('不能构成一个三角形。')end例题:将A矩阵用for循环写出来A=12345234563456745678说明:For循环更倾向于在已知计算步数的情况下使
6、用,while更多应用在已知条件满足情况下的循环。相比之下,while循环会更加快速的收敛。二、实例讲解和讨论第2节:for和while的使用讨论题:如何编制程序?找出A矩阵中值等于5的元素所在位置?sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)summean=sum/cntend例题:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和
7、s=1;n=100:500;fori=1:length(n)ifrem(n(i),21)==0m(s)=n(i);s=s+1;continue,endifs==6breakendenddisp(m)例题:求[100,500]之间前5个能被21整除的整数。请改成用while循环编程求解?更简洁的方法?n=100;a=ones(1,n);fori=3:na(i)=a(i-2)+a(i-1);ifa(i)>10000a(i),break;endenddisp(i)例题:用for循环指令来寻找Fibonacc数组中第一个大于10000的元素:a(1)=1,a(2)=1,
8、a(i)=a(i-2)+a(i-1)for和while可以用来迭代(重要)%求1,2...,100的和s=0;fori=1:100,s=s+i;enddisp(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;fork=2:80000a(k)=0.99803*a(k-1)-0.06279*b(k-1);b(k)=0.06279*a(k-1)+0.99803
9、*b(k-1);end编写高效编程代码(掌握)在程序编制时,如果变量的大小随着计算会扩展,预先给变量设定好尺寸会使得代码更加高效clear,tica=zeros(1,10000);%Preallocatecount=0;fork=1:10000v=exp(rand(1)*rand(1));ifv>0.5%Conditionallyaddtoarraycount=count+1;a(count)=v;endenda=a(1:count);%Trimtheresulttoc在实际MATLAB编程中,采用循环语句会降低其执行速度,用其内在函数批量处理大矩阵可以有效提高
10、计算速度已知y=1+1/