云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > n6ch07

n6ch07

  • 62 次阅读
  • 3 次下载
  • 2025/7/2 21:49:13

第七章 M文件和函数句柄

7.1 7.2

7.2.1

M文本编辑器 MATLAB控制流

for循环结构

【例7.2-1】一个简单的for循环示例。

for ii=1:10;

x(ii)=ii; end;

x x =

1 2 3 4 5 6 7 8 9 10

7.2.2 while循环结构

【例7.2-2】Fibonacci数组的元素满足Fibonacci 规则:ak?2?ak?ak?1 ,(k?1,2,?);且

a1?a2?1。现要求该数组中第一个大于10000的元素。

a(1)=1;a(2)=1;i=2; while a(i)<=10000 a(i+1)=a(i-1)+a(i); i=i+1; end;

i,a(i), i =

21 ans =

10946

7.2.3 if-else-end分支结构

【例7.2-3】一个简单的分支结构。

cost=10;number=12; if number>8

sums=number*0.95*cost; end,sums sums =

114.0000

【例7.2-4】用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。

n=100;a=ones(1,n); for i=3:n

a(i)=a(i-1)+a(i-2); if a(i)>=10000 a(i), break; end;

1

end,i ans =

10946 i =

21

7.2.4 switch-case结构

【例7.2-5】学生的成绩管理,用来演示switch结构的应用。

clear;

for i=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;end;c=[d,c]; Name={' Jack','Marry','Peter',' Rose',' Tom'}; Mark={72,83,56,94,100};Rank=cell(1,5);

S=struct('Name',Name,'Marks',Mark,'Rank',Rank); for i=1:5

switch S(i).Marks

case 100 S(i).Rank='满分'; case a S(i).Rank=' 优秀'; case b S(i).Rank=' 良好'; case c S(i).Rank=' 及格'; otherwise S(i).Rank='不及格'; end end

disp(['学生姓名 ',' 得分 ',' 等级']);disp(' ') for i=1:5;

disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]); end;

学生姓名 得分 等级

Jack 72 及格 Marry 83 良好 Peter 56 不及格 Rose 94 优秀 Tom 100 满分

7.2.5 try-catch结构

【例7.2-6】try-catch结构应用实例。

clear,N=4;A=magic(3); try

A_N=A(N,:), catch

A_end=A(end,:), end

lasterr A_end =

4 9 2 ans =

Index exceeds matrix dimensions.

7.2.6 控制程序流的其它常用指令

2

7.3

7.3.1 7.3.2 7.3.3 7.3.4

脚本文件和函数文件

M脚本文件 M函数文件 局部变量和全局变量 M文件的一般结构

【例7.3-1】M函数文件示例。 [circle.m]

function sa = circle(r,s)

%CIRCLE plot a circle of radii r in the line specified by s. % r 指定半径的数值 % s 指定线色的字符串 % sa 圆面积 %

% circle(r) 利用蓝实线画半径为 r 的圆周线.

% circle(r,s) 利用串 s 指定的线色画半径为 r 的圆周线. % sa=circle(r) 计算圆面积,并画半径为 r 的蓝色圆面. % sa=circle(r,s) 计算圆面积,并画半径为 r 的 s 色圆面.

% 编写于1999年4月7日,修改于1999年8月27日。 if nargin>2

error('输入宗量太多。'); end;

if nargin==1 s='b'; end; clf;

t=0:pi/100:2*pi; x=r*exp(i*t); if nargout==0 plot(x,s); else

sa=pi*r*r;

fill(real(x),imag(x),s) end

axis('square')

7.3.5 一 二

P码文件 语法分析过程和伪代码 P码文件的预生成

3

三 7.3.6

内存中P码文件的列表和清除

MATLAB的搜索过程

7.4

7.4.1 7.4.2 一

变量的检测传递和限权使用函数

输入输出宗量检测指令 跨空间变量传递 跨空间计算串表达式的值

【例7.4-1】evalin运行机理与eval的异同。 (1)编写M函数文件 [evalinzzy.m]

function y1=evalinzzy(a,s) t=(0:a)/a*2*pi;

y1=subevalinzzy(4,s);

%------------ subfunction ------------- function y2=subevalinzzy(a,s) t=(0:a)/a*2*pi;ss='a*exp(i*t)'; switch s

case {'base','caller'} y2=evalin(s,ss); case 'self'

y2=eval(ss); end

(2)在Notebook或MATLAB指令窗中运行以下指令

clear,a=30;t=(0:a)/a*2*pi;sss={'base','caller','self'}; for k=1:3

y0=evalinzzy(8,sss{k}); subplot(1,3,k)

plot(real(y0),imag(y0),'r','LineWidth',3),axis square image end

420100-10-20-2002050-5-50520-2-4-4-2024图 7.4-1 利用不同工作空间中的变量值计算eval('a*exp(i*t)') 二 跨空间赋值

4

搜索更多关于: n6ch07 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第七章 M文件和函数句柄 7.1 7.2 7.2.1 M文本编辑器 MATLAB控制流 for循环结构 【例7.2-1】一个简单的for循环示例。 for ii=1:10; x(ii)=ii; end; x x = 1 2 3 4 5 6 7 8 9 10 7.2.2 while循环结构 【例7.2-2】Fibonacci数组的元素满足Fibonacci 规则:ak?2?ak?ak?1 ,(k?1,2,?);且a1?a2?1。现要求该数组中第一个大于10000的元素。 a(

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com