07M文件和面向对象编程Word文档下载推荐.docx

上传人:b****2 文档编号:3634121 上传时间:2023-05-02 格式:DOCX 页数:43 大小:454.41KB
下载 相关 举报
07M文件和面向对象编程Word文档下载推荐.docx_第1页
第1页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第2页
第2页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第3页
第3页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第4页
第4页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第5页
第5页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第6页
第6页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第7页
第7页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第8页
第8页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第9页
第9页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第10页
第10页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第11页
第11页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第12页
第12页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第13页
第13页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第14页
第14页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第15页
第15页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第16页
第16页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第17页
第17页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第18页
第18页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第19页
第19页 / 共43页
07M文件和面向对象编程Word文档下载推荐.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

07M文件和面向对象编程Word文档下载推荐.docx

《07M文件和面向对象编程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《07M文件和面向对象编程Word文档下载推荐.docx(43页珍藏版)》请在冰点文库上搜索。

07M文件和面向对象编程Word文档下载推荐.docx

end;

x

x=

12345678910

7.3.2while循环结构

【例7.3.2-1】Fibonacci数组的元素满足Fibonacci规则:

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

a

(1)=1;

a

(2)=1;

i=2;

whilea(i)<

=10000

a(i+1)=a(i-1)+a(i);

i=i+1;

i,a(i),

i=

21

ans=

10946

7.3.3if-else-end分支结构

【例7.3.3-1】一个简单的分支结构。

cost=10;

number=12;

ifnumber>

8

sums=number*0.95*cost;

end,sums

sums=

114.0000

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

n=100;

a=ones(1,n);

fori=3:

n

a(i)=a(i-1)+a(i-2);

ifa(i)>

a(i),

break;

end;

end,i

10946

21

7.3.4switch-case结构

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

clear;

%

a{i}=89+i;

b{i}=79+i;

c{i}=69+i;

d{i}=59+i;

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);

5

switchS(i).Marks

case100

S(i).Rank='

满分'

;

casea

优秀'

caseb

良好'

casec

及格'

otherwise

不及格'

disp(['

学生姓名'

得分'

等级'

]);

disp('

'

5;

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

学生姓名得分等级

Jack72及格

Marry83良好

Peter56不及格

Rose94优秀

Tom100满分

7.3.5try-catch结构

【例7.3.5-1】try-catch结构应用实例:

魔方阵的行进行援引,当“行下标”超出魔方阵的最大行数时,将改向对最后一行的援引,并显示“出错”警告。

clear,N=4;

A=magic(3);

try

A_N=A(N,:

catch

A_end=A(end,:

lasterr

A_end=

492

Indexexceedsmatrixdimensions.

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

7.3.6.1return指令

7.3.6.2input和keyboard指令

7.3.6.3yesinput指令

7.3.6.4pause指令

7.3.6.5break指令

7.3.6.6error和warning指令

7.4脚本文件和函数文件

7.4.1M脚本文件

7.4.2M函数文件

7.4.3局部变量和全局变量

7.4.4M文件的一般结构

【例7.4.4-1】M函数文件示例。

本例演示:

(A)编写一个画任意半径任意色彩线型的圆。

(B)完整函数文件的基本结构。

(C)函数文件各基本组成部分的作用。

[exm07044_1.m]

functionsa=exm07044_1(r,s)

%CIRCLE

%

ifnargin>

2

error('

输入宗量太多。

'

);

ifnargin==1

s='

b'

t=0:

pi/100:

2*pi;

x=r*exp(i*t);

ifnargout==0

plot(x,s);

else

sa=pi*r*r;

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

axis('

square'

7.4.5P码文件

7.4.5.1语法分析过程和伪代码

7.4.5.2P码文件的预生成

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

7.4.6MATLAB的搜索过程

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

7.5.1输入输出宗量检测指令

7.5.2“变长度”输入输出宗量

【例7.5.2-1】变长度宗量使用示例。

(1)

[exm07052_1.m]

functionvarargout=exm07052_1(r,varargin)

%RINGZYPlotaringandcalculatetheareaofthering.

vin=length(varargin);

Nin=vin+1;

%<

11>

error(nargchk(1,Nin,nargin))%

ifnargout>

6%

Toomanyoutputarguments'

pi/20:

s=pi*r*r;

switchNin

case1

plot(x,'

case2

r2=varargin{1};

%<

22>

x2=r2*exp(i*t);

holdon;

plot(x2,'

holdoff

otherwise

26>

plot(x,varargin{2:

end});

holdon%<

28>

plot(x2,varargin{2:

holdoff%<

29>

axis('

varargout{1}=real(x);

varargout{2}=imag(x);

%<

33>

varargout{5}=pi*r*r;

varargout{6}=[];

%<

34>

ifNin>

36>

varargout{3}=real(x2);

varargout{4}=imag(x2);

%<

38>

varargout{6}=pi*(r^2-r2^2);

%<

39>

end

r1=1;

r2=3;

[x1,y1,x2,y2,s1,s2]=exm07052_1(r1);

[x1,y1,x2,y2]=exm07052_1(r1,r2);

[x1,y1,x2,y2,s1,s2]=exm07052_1(r1,r2);

(3)

r2=0.6;

subplot(1,3,1),exm07052_1(r1,r2),

subplot(1,3,2),exm07052_1(r1,r2,'

Marker'

o'

subplot(1,3,3),exm07052_1(r1,r2,'

LineWidth'

5,'

Color'

[10.40])

图7.5-1

7.5.3跨空间变量传递

7.5.3.1跨空间计算串表达式的值

【例7.5.3.1-1】本例演示:

(A)编写绘制正多边形或圆的程序。

(B)子函数与(母)函数的关系。

(C)各种不同的工作空间。

(D)evalin运行机理与eval的异同。

[exm070531_1.m]

functiony1=exm070531_1(a,s)

t=(0:

a)/a*2*pi;

y1=subevalinzzy(4,s);

%------------subfunction-------------

functiony2=subevalinzzy(a,s)

ss='

a*exp(i*t)'

switchs

case{'

base'

caller'

}

y2=evalin(s,ss);

case'

self'

y2=eval(ss);

clear,a=30;

sss={'

fork=1:

3

y0=exm070531_1(8,sss{k});

subplot(1,3,k)

plot(real(y0),imag(y0),'

r'

3),axissquareimage

end

图7.5-2

7.5.3.2跨空间赋值

【例7.5.3.2-1】assignin运作机理示范。

[exm070532_1.m]

functiony=exm070532_1(x)

y=sqrt(x);

t=x^2;

assignin('

yy'

t)

x=4;

y=exm070532_1(x);

disp([blanks(5),'

x'

blanks(5),'

y'

blanks(4),'

]),disp([x,y,yy])

xyyy

4216

7.5.4子函数和私用函数

7.5.4.1子函数

7.5.4.2私用函数

7.6串演算函数

7.6.1eval

【例7.6.1-1】计算“表达式”串,产生向量值。

clear,t=pi;

cem='

[t/2,t*2,sin(t)]'

y=eval(cem)

y=

1.57086.28320.0000

【例7.6.1-2】计算“语句”串,创建变量。

eval('

theta=t/2,y=sin(theta)'

who

theta=

1.5708

1

Yourvariablesare:

tthetay

【例7.6.1-3】计算“替代”串。

A=ones(2,1);

B=ones(1,3);

c=eval('

B*A'

A*B'

),errmessage=lasterr

c=

111

errmessage=

Errorusing==>

*

Innermatrixdimensionsmustagree.

【例7.6.1-4】计算“合成”串。

CEM={'

cos'

sin'

tan'

theta=pi*k/12;

y(1,k)=eval([CEM{1},'

('

num2str(theta),'

)'

y

0.96590.86600.7071

7.6.2feval

【例7.6.2-1】feval和eval运行区别之一:

feval的FN绝对不能是表达式。

x=pi/4;

Ve=eval('

1+sin(x)'

Ve=

1.7071

Vf=feval('

x)

?

Errorusing==>

feval

Invalidfunctionname'

.

【例7.6.2-2】feval和eval调用区别:

feval的FN只接受函数名。

本例两种方法以后者为好。

randn('

seed'

1);

A=rand(2,2);

[ue,de,ve]=eval('

svd(A)'

Resultsbyeval'

disp([ue,de,ve]);

disp(blanks

(1))

[uf,df,vf]=feval('

svd'

A);

Resultsbyfeval'

disp([uf,df,vf])

Resultsbyeval

-0.9193-0.39361.22120-0.7897-0.6135

-0.39360.919300.2633-0.61350.7897

Resultsbyfeval

-0.39360.919300.2633-0.61350.7897

7.6.3内联函数

7.6.3.1内联函数的创建

7.6.3.2涉及内联函数性质的指令

7.6.3.3内联函数创建和应用示例

【例7.6.3.3-1】演示:

内联函数的第一种创建格式;

使内联函数适于“数组运算”。

clear,F1=inline('

sin(rho)/rho'

F1=

Inlinefunction:

F1(rho)=sin(rho)/rho

f1=F1

(2)

f1=

0.4546

FF1=vectorize(F1)

xx=[0.5,1,1.5,2];

ff1=FF1(xx)

FF1=

FF1(rho)=sin(rho)./rho

ff1=

0.95890.84150.66500.4546

【例7.6.3.3-2】演示:

第一种内联函数创建格式的缺陷;

含向量的多宗量输入的赋值。

G1=inline('

a*exp(x

(1))*cos(x

(2))'

),G1(2,[-1,pi/3])

G1=

G1(a)=a*exp(x

(1))*cos(x

(2))

inline/subsref

Toomanyinputstoinlinefunction.

G2=inline('

a'

),G2(2,[-1,pi/3])

G2=

G2(a,x)=a*exp(x

(1))*cos(x

(2))

0.3679

【例7.6.3.3-3】演示:

产生向量输入、向量输出的内联函数;

这种向量函数的调用方法。

Y2=inline('

[x

(1)^2;

3*x

(1)*sin(x

(2))]'

argnames(Y2)

Y2=

Y2(x)=[x

(1)^2;

3*x

(1)*sin(x

(2))]

ans=

x=[4,pi/6];

y2=Y2(x)

y2=

16.0000

6.0000

【例7.6.3.3-4】演示:

最简练格式创建内联函数;

内联函数可被feval指令调用。

Z2=inline('

P1*x*sin(x^2+P2)'

2)

Z2=

Z2(x,P1,P2)=P1*x*sin(x^2+P2)

z2=Z2(2,2,3)

fz2=feval(Z2,2,2,3)

z2=

2.6279

fz2=

2.6279

7.7函数句柄

7.7.1函数句柄的创建和观察

【例7.7.1-1】为MATLAB的“内建”函数创建函数句柄,并观察其内涵。

hsin=@sin;

class(hsin)

size(hsin)

function_handle

11

CC=functions(hsin)

CC=

function:

type:

overloaded'

file:

MATLABbuilt-infunction'

methods:

[1x1struct]

(4)

CC.methods.sym

d:

\matlab6p5\toolbox\symbolic\@sym\sin

7.7.2函数句柄的基本用法

【例7.7.2-1】本例通过函数及其句柄演示若干基本用法。

fhandle=str2func('

ys=sin(pi/4)

yfold=feval('

pi/4)

yfnew=feval(fhandle,pi/4)

ys=

0.7071

yfold=

yfnew=

0.7071

Alpha=sym('

pi/4'

yss=sin(Alpha)

Alpha)

ynews=feval('

Alpha)

yss=

1/2*2^(1/2)

ynews=

1/2*2^(1/2)

xold=fminbnd('

0,2*pi)

xnew=fminbnd(fhandle,0,2*pi)

xold=

4.7124

xnew=

4.7124

【例7.7.2-2】本例演示:

如何避免创建“无效函数句柄“问题。

Hy2=@fhzzy%fhzzy.m是随书光盘mfiles文件夹上的一个函数文件。

Hy2=

@fhzzy

class(Hy2)

size(Hy2)

feval(Hy2,'

line'

Undefinedfunction'

fhzzy'

【例7.7.2-3】自建函数及其句柄的使用。

[fhzzy.m]

functionHr=fhzzy(flag)

%fhzzy

100)/100*2*pi;

x=sin(t);

y=cos(t);

Hr=@cirline;

feval(Hr,flag,x,y,t)

%-------------subfunction---------------------------

functioncirline(wd,x,y,t)

switchwd

plot(t,x,'

t,y,'

2)

circle'

plot(x,y,'

g.'

MarkerSize'

30),

axissquareoff

otherwise

输入宗量只能取'

或'

shg

Hy3=@fhzzy

fhzzy('

Hy3=

@fhzzy

图7.7-1

which('

fhzzynotfound.

feval('

Undefinedfunctionorvariable'

(5)

feval(Hy3,'

【例7.7.2-4】子函数句柄的创建与使用。

HCL=fhzzy('

HCL=

@cirline

图7.7-2

tt=(0:

xx=sin(tt);

yy=cos(tt);

cirline('

xx,yy,tt);

xx,yy,tt)

cirline'

feval(HCL,'

7.8

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2