matlab的m函数编程,Matlab M文件编程  示例

【例

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

% 元胞数组 与 结构数组

的结合

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

满分

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[exm07044_1.m]

function sa = exm07044_1(r,s)

%CIRCLE

%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.1.1

“变长度”输入输出宗量

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

(1)

[exm07052_1.m]

function varargout =

exm07052_1(r,varargin)

%RINGZY

Plot a ring and calculate the area of the ring.

%

%

vin=length(varargin);Nin=vin+1;%

<11>

error(nargchk(1,Nin,nargin))

%

if nargout>6

%

error('Too many output

arguments')

end

t=0:pi/20:2*pi;x=r*exp(i*t);s=pi*r*r;

if nargout==0

switch Nin

case 1

plot(x,'b')

case 2

r2=varargin{1};

%<22>

x2=r2*exp(i*t);

plot(x,'b');hold on

;plot(x2,'b');hold

off

otherwise

r2=varargin{1};

%<26>

x2=r2*exp(i*t);

plot(x,varargin{2:end});hold on

%

<28>

plot(x2,varargin{2:end});hold off

%

<29>

end;

axis('square')

else

varargout{1}=real(x);varargout{2}=imag(x);

%<33>

varargout{5}=pi*r*r;varargout{6}=[];

%<34>

if Nin>1

r2=varargin{1};

%<36>

x2=r2*exp(i*t);

varargout{3}=real(x2);varargout{4}=imag(x2);

%<38>

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

%<39>

end;

end

(2)

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)

r1=1;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',[1

0.4 0])

a4c26d1e5885305701be709a3d33442f.png

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

a4c26d1e5885305701be709a3d33442f.png

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

a4c26d1e5885305701be709a3d33442f.png

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

7.1.1

函数句柄的创建和观察

【例

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

(1)

(2)

size(hsin)

function_handle

ans =

1

1

(3)

function: 'sin'

type: 'overloaded'

file: 'MATLAB built-in function'

methods: [1x1

struct]

本例通过函数及其句柄演示若干基本用法。

(1)

(2)

yfold=feval_r('sin',pi/4)

yfnew=feval_r(fhandle,pi/4)

0.7071

yfold =

0.7071

yfnew =

0.7071

(3)

yss=sin(Alpha)

yfold=feval_r('sin',Alpha)

ynews=feval_r('sin',Alpha)

1/2*2^(1/2)

yfold =

1/2*2^(1/2)

ynews =

1/2*2^(1/2)

(4)

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

4.7124

xnew =

4.7124

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值