6第6章M文件与程序设计要点

上传人:cn****1 文档编号:486378816 上传时间:2022-11-20 格式:DOC 页数:16 大小:151.51KB
返回 下载 相关 举报
6第6章M文件与程序设计要点_第1页
第1页 / 共16页
6第6章M文件与程序设计要点_第2页
第2页 / 共16页
6第6章M文件与程序设计要点_第3页
第3页 / 共16页
6第6章M文件与程序设计要点_第4页
第4页 / 共16页
6第6章M文件与程序设计要点_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《6第6章M文件与程序设计要点》由会员分享,可在线阅读,更多相关《6第6章M文件与程序设计要点(16页珍藏版)》请在金锄头文库上搜索。

1、第 6 章 M文件与程序设计复杂问题的解算需要借助MATLAB程序进行。这种程序的扩展名为m故称为M文件。M文件分为(M)脚本文件和(M)函数文件。本章介绍编写MATLAB程序时常用的控制结构、函数文件的构造、主函数、子函数及述函数句柄的创建、观察和调用。6.1 MATLAB控制流语 法说 明if 表达式 语句体1elseif 语句体2else 语句体3end1若表达式返回数组,则仅当所有元素都不为零时为真;若数组为空,则为假。2elseif和else可选,其中可有多个elseif。switch 表达式 case 表达式1 语句体1 case 式2,式3 语句体2 otherwise 语句体3

2、end1仅执行第一个满足条件的语句体。2case后可用花括号把多个表达式以“或”逻辑连接起来。 3可有多个case语句。4otherwise可选。for x = 表达式语句体end1执行确定次数的循环。2表达式为矩阵时,x把矩阵按列拉长为向量取值。while 表达式 语句体end若表达式为真时,循环执行语句体。6.1.1 if-else-end控制结构if-else-end指令为程序流提供了一种分支控制。表 6.1-1 if-else-end 分支结构的使用方式单 分 支双 分 支多 分 支if expr(commands) endif expr(commands1)else(commands

3、2)endif expr1(commands)elseif expr2(commands).else (commandsk)end当expr给出“逻辑1”时,(commands)指令组才被执行。当expr给出“逻辑1”时,(commands1)指令组被执行;否则,(commands2)被执行。expr1,expr2, 中,首先给出“逻辑1”的那个分支的指令组被执行;否则,(commandsk)被执行。 该使用方法常被switch-case所取代。【例6.1-1】已知函数,编写能对任意一组输入x值求相应y值的程序。(1)编写函数文件程序:function y=exm060101(x)% y=ex

4、m060101(x) Function calculate of example 6.1-1 n=length(x);for k=1:n if x(k)=1 y(k)=exp(1-x(k); else y(k)=x(k)3; endend(2)保存在搜索路径上(3)调用函数文件x=-2,-1.2,-0.4,0.8,1,6y=exm060101(x) 6.1.2 switch-case控制结构表 6.1-2 switch-case控制结构的使用方式指 令 格 式含 义switch expr CASE VALUE_1 (commands1) CASE VALUE_2(commands2) case

5、 value_k (commandsk) otherwise (commands)endl expr为根据此前给定变量进行计算的表达式l value_1是给定的数值、字符串标量(或单元数组)l 若expr结果与value_1(或其中的单元元素)相等,则执行。l value_k是给定的数值、字符串标量(或单元数组)l 若expr结果与value_k(或其中的单元元素)相等,则执行。l 该情况是以上的“并”的“补”l 若所有case都不发生,则执行该组命令。【例6.1-2】已知学生的名字和百分制分数。要求根据学生的百分制分数,分别采用“满分”、“优秀”、“良好”、“及格”和“不及格”等表示学生的学

6、习成绩。 clear;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;A(2,:)=72,83,56,94,100;%for k=1:5 switch A2,k case 100 r=满分; case a r=优秀; case b r=良好; case c r=及格; otherwise r=不及格; endA(3,k)=r;endA6.1.3 for循环和while循环表 6.1-3 循环结构的使用方式for 循环while循环f

7、or ix=array (commands)endWHILE EXPRESSION (commands)end【例6.1-3】创建Hilbert矩阵。(1)Hilbert矩阵。(2)K=5;A = zeros(K,K) ;for m = 1:Kfor n = 1:KA(m,n) = 1/(m+n -1);endendformat ratA%format short g A = Columns 1 through 4 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/4 1/5 1/6 1/7 1/5 1/6 1/7 1/8 Column 5 1/5

8、 1/6 1/7 1/8 1/9 (3)clearticK=1000;for m = 1:Kfor n = 1:KA1(m,n) = 1/(m+n -1);endendt1=tocticK=1000;A2 = zeros(K,K);for m = 1:Kfor n = 1:KA2(m,n) = 1/(m+n -1)endendt2=toc (4)ticN=1000;n=repmat(1:N,N,1);m=n;A3=1./(n+m-1);t3=toc clearticN=5;n=repmat(1:N,N,1);m=n;A3=1./(n+m-1);t3=tocformat ratA3 A3 = 1

9、 0.5 0.33333 0.25 0.2 0.5 0.33333 0.25 0.2 0.16667 0.33333 0.25 0.2 0.16667 0.14286 0.25 0.2 0.16667 0.14286 0.125 0.2 0.16667 0.14286 0.125 0.11111t3 = 0.66052A3 = Columns 1 through 4 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/4 1/5 1/6 1/7 1/5 1/6 1/7 1/8 Column 5 1/5 1/6 1/7 1/8 1/9 【例6.1-5】

10、创建n阶魔方矩阵,限定条件是n为能被4整除的偶数。% exm060105.m生成一类魔方矩阵,该魔方矩阵的阶n 为能被4整除的偶数。% A为魔方矩阵% n魔方矩阵的阶数clearclcwhile 1n=input(请输入一个能被4整除的正整数! n = ); if mod(n,4)=0 break endendG=logical(eye(4,4)+rot90(eye(4,4); m=n/4;K=repmat(G,m,m); N=n2;A=reshape(1:N,n,n); A(K)=N-A(K)+1 验证所生成的魔方阵正确与否的程序:s0=round(n*(n*n+1)/2);disp(int2str(n), 阶魔方矩阵的标称和是 ,int2str(s0)Ns0=round(2*(n+1);B=A;SC=sum(A);SR=sum(B);Sd=sum(diag(A); Sdi=sum(diag(B);LS=SC,SR,Sd,Sdi=s0;NS=round(sum(LS)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号