文档详情

ch6_编程.docx

发布:2017-04-02约7.5千字共13页下载文档
文本预览下载声明
M文件和函数句柄从总体上说,单独的MATLAB指令,及由若干指令构成的孤立表达式,只能解算或仿真简单理论数学模型所描述的问题。复杂些的问题通常需要用一组理论数学算式。这些问题的解算及仿真就需要借助较复杂的MATLAB程序进行。这种MATLAB程序由较多的MATLAB指令和多种多样的MATLAB表达式组成,并循着一定的执行次序运行。这种程序的扩展名为m。这就是脚本M文件或函数M文件。本章系统介绍编写MATLAB程序时最常用到的四种控制结构、M函数文件的构造、主函数、子函数以及匿名函数。最后一节专门叙述函数句柄的创建、观察和调用。MATLAB控制流if-else-end条件控制表 6.1-1 if-else-end分支结构的使用方式单分支双分支多分支if expr(commands)endif expr(commands1)else(commands2)endif expr1(commands)elseifexpr2(commands)…….else(commandsk)end〖说明〗【例6.1-1】1)function [xmin,fmin,n]=exm060101(fx,a,b,Nt)% exm060101.m% fx% a、b% Nt% xmin、ymin% n[~,f0]=fminbnd(fx,a,b);%n=1;%jj=1;%while 1n=2*n;%d=(b-a)/n;% x=a:d:b;%ii=0;xc=zeros(1,n);fc=xc;% for k=1:n% [w,f,eflag]=fminbnd(fx,x(k),x(k+1));% if eflag0% ii=ii+1;xc(ii)=w;fc(ii)=f; end end [fmin,kk]=min(fc);%xmin=xc(kk);% if abs(f0-fmin)1e-6%jj=jj+1;% if jjNt%break% endelseif f0-fmin1e-6% f0=fmin;%jj=1;% endend2)clearfx=@(x)(sin(x)^2*exp(-0.1*x)-0.5*sin(x)*(x+0.1));a=-50;b=5;[xmin,fmin,n]=exm060101(fx,a,b,3);fprintf(在x=%6.5f处,函数到达最小值%6.5f\n,xmin,fmin)fprintf(最终子区间分割数为 %d\n,n)在x=-19.60721处,函数到达最小值-3.34765最终子区间分割数为 128〖说明〗switch-case控制结构表 6.1-2switch-case控制结构的使用方式指令格式含义switch exprcase value_1(commands1)case value_2(commands2) case value_k(commandsk)otherwise(commands)end〖说明〗【例6.1-2】clear;%定义分数段:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(60)。for k=1:10a(k)={89+k};b(k)={79+k};c(k)={69+k};d(k)={59+k};end;c=[d,c];%输入学生的名字和分数A=cell(3,5);%A(1,:)={Jack,Marry,Peter,Rose,Tom};%7A(2,:)={72,83,56,94,100};%8%根据学生的分数,求出相应的等级。for k=1:5 switch A{2,k}% case 100 %r=满分; case a%r=优秀; case b%r=良好; case c%r=及格; otherwise %r=不及格; endA(3,k)={r};endAA = Jack Marry Peter Rose Tom [ 72] [ 83] [ 56] [ 94] [ 100] 及格 良好 不及格 优秀 满分〖说明〗for循环和while循环表 6.1-3循环结构的使用方式for 循环while循环forix=array (commands)endwhile expression (commands)end【例6.1-3】创建Hilbert矩阵。1)2)K=5;A = zeros(K,K) ;%for m = 1:K%for n = 1:K%A(m,n) = 1/(m+n -1);ende
显示全部
相似文档