加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab M文件编程  示例

(2012-05-24 10:06:14)
标签:

杂谈

分类: study与matlab

7.1.1    switch-case结构

【例 7.3.4-1】学生的成绩管理,用来演示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      满分

 

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

[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])

http://s15/middle/647aa009gf877617d31fe&690M文件编程  示例" TITLE="Matlab M文件编程  示例" />

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
http://s10/middle/647aa009gc0bf02b76da9&690M文件编程  示例" TITLE="Matlab M文件编程  示例" />

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

http://s10/middle/647aa009gc0bf17db9799&690M文件编程  示例" TITLE="Matlab M文件编程  示例" />

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

7.1.1    函数句柄的创建和观察

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

1

hsin=@sin;  

 

2

class(hsin)

size(hsin)  

ans =

function_handle

ans =

     1     1  

 

3

CC=functions(hsin)  

CC =

    function: 'sin'

        type: 'overloaded'

        file: 'MATLAB built-in function'

     methods: [1x1 struct]  

 

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

(1) 

fhandle=str2func('sin');  

 

2

ys=sin(pi/4)

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

yfnew=feval_r(fhandle,pi/4)  

ys =

    0.7071

yfold =

    0.7071

yfnew =

0.7071  

 

3

Alpha=sym('pi/4');

yss=sin(Alpha)

yfold=feval_r('sin',Alpha)

ynews=feval_r('sin',Alpha)  

yss =

1/2*2^(1/2)

yfold =

1/2*2^(1/2)

ynews =

1/2*2^(1/2)  

 

4

xold=fminbnd('sin',0,2*pi)

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

xold =

    4.7124

xnew =

    4.7124  

http://s3/middle/647aa009gc0bf42051492&690M文件编程  示例" TITLE="Matlab M文件编程  示例" />
http://s13/middle/647aa009gc0bf46f84d7c&690M文件编程  示例" TITLE="Matlab M文件编程  示例" />




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有