Matlab基础知识点 - 图文(6)

2019-08-26 17:23

MatLab讲义 2002年9月版

例:c={?aaa?,?bbb?,?ccc?} for i=c i end

i=?aaa? i=?bbb? i=?ccc?

例:在循环中,可以改变循环变量的值,但它不会改变循环的次数.

r=1

for k=1:19

k=k+1; r=r*k;

end

例:可利用数组(阵列)任意指定循环变是的值.(ex25.m)

varx=[7 3 10 5]; vary=zeros(size(v)); k=0;

for x=varx

k=k+1

vary(k)=x.^2; end

disp([v,w])

例:(ex31.m)求100-200之间的素数。 for m=101:2:200 k=fix(sqrt(m)); for i=2:k+1

if rem(m,i)==0 break; end end

if i>=k+1 disp(m) end end

4.5 while-end循环

不定次数重复的循环执行语句。 格式:while <逻辑表达式> 循环体 end

例:求1000以下的菲波纳契数(ex26.m)

f=[1 1]; i=1;

while f(i)+f(i+1) < 1000

f(i+2) = f(i) + f(i+1); i=i+1; end

例:a=150;

while a>0.1 a=a/2; end

26

MatLab讲义 2002年9月版

4.6 switch-end语句:

情况切换语句,case语句中可以采用多个值。 语句格式:

switch (变量或表达式) case v1 语句 case v2 语句 ....... otherwise 语句 end

例: switch (rem(n,4)==0) + (rem(n,2)==0)

case 0 ...... case 1 ...... case 2 ...... otherwise

error('This is impossible') end

例:switch var2

case {-2,-1}

disp(?var2 is negative one or two?) case {1,2,3} ...... otherwise

disp(?var2 is other value?) end

4.7 break语句:

一个跳出循环的命令,导致最内层的while,for,if语句终止。 例:(test3.m)

a = 0; fa = -inf; b = 3; fb = inf; while b-a > eps*b x = (a+b)/2; fx = x^3-2*x-5; if fx == 0 break

elseif sign(fx) == sign(fa) a = x; fa = fx; else

b = x; fb = fx; end end x

27

MatLab讲义 2002年9月版

4.8 try..catch语句

用于捕获程序运行中出现的错误,语法如下: try 语句,...语句,catch 语句,...语句 end 在正常情况下,程序只执行try和catch之间的语句,在执行上述语句发生错误时,程序将执行catch和end之间的语句,在这里可以利用lasterr获得错误信息进行处理,如再发生错误,除非嵌套了另一个try...catch,否则程序将中断执行。

4.9 return语句

return语句终止当前的命令序列,把控制返回到调用函数或键盘。

4.10 输入/输出语句

? 获得用户输入input:显示一段信息,并读取用户输入。 语法:x=input(提示信息,\输入类型\,缺省为double型。 例:a=input(?Please input a member?) a=input(?Please input a char?,?s?)

? 暂停执行,等待用户按键pause:程序暂停执行。 语法:pause(n) pause

其中:n为暂停的秒数。

? 建立完整的图形界面:菜单输入函数menu。 例:(ex27.m)

s=menu('color selection','red','greed','blue','yellow','black') switch(s) case 1

scolor='red'; case 2

scolor='green'; case 3

scolor='blue'; case 4

scolor='yellow'; case 5

scolor='blue'; otherwise

disp('error'); end scolor

运行结果:

28

MatLab讲义 2002年9月版

? 输出函数print,printopt

4.11 自定义函数:

用M函数自定义函数,函数M文件必须以函数的名称来作为文件名,M文件的格式如下:

<因变量>=<函数名>(<自变量>)

自变量和因变量都可以是矩阵或几个矩阵。

M文件的第一行包括function,该文件就是函数文件,函数和命令文件的区别是:命令文件的变量用完后保存在内存,而函数文件文件内定义的量仅在函数文件内部起作用。函数文件有多个输出变量时,用[]括起,有多个输出变量时,用()括起。

例:(quroot.m)

function x=quroot(a) if abs(a(1)) > eps

d=a(2)^2-4*a(1)*a(3); if d >= 0 e=sqrt(d); f=2*a(1);

x(1)=(-a(2)+e)/f; x(2)=(-a(2)-e)/f; end

elseif abs(a(2)) > eps x=-a(3)/a(2); else

error('coefficient error!') end

函数调用为: a=[1 2 1] x=quroot(a) x=

-1 -1

/*子函数调用*/

function [mean, stdev] = stat(x) n=length(x); mean = avg(x,n);

stdev = sqrt(sum((x-avg(x,n)).^2)/n);

function mean = avg(x,n)

29

MatLab讲义 2002年9月版

mean = sum(x)/n;

在函数文件中可以包含多个函数,其中第一个函数称为主函数,其函数名与文件名相同,它可以由其它文件引用,其它函数称为子函数,它只能由函数中的主函数和其它子函数引用。

函数中有两个永久变量nargin,nargout 表示引用函数时给出的输入变量数和输出变量数。

function c=testrg1(a,b) if(nargin==1) c=a.^2;

else (nargin==2) c=a*b; end

输入一个变量时,计算这一变量的平方数 输入二个变量时,计算这两个变量的积。

函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身。 例:求n!(ex33.m)

function y=ex33(n) %%求n! if n<0

error('n is smaller them 0') return end

if n==0|n==1 y=1 else

y=n*ex33(n-1); end

4.12 全局变量

局部变量和全局变量:

函数工作空间中,变量有三类:

(1)由调用函数传递输入和输出数据的变量; (2)在函数内部临时产生的变量(局部变量);

(3)由调用函数空间,基本工作空间或其它函数工作空间提供的全局变量。 global:让不同的函数访问同一个变量

只要在函数中:global 变量名;%% 该变量为全局变量

function h = falling(t) global GRAVITY

h = 1/2*GRAVITY*t.^2;

22

例:(ex28.m)对于函数 z=α(x-1)+β(y+1)。编写相应的函数文件,其中α和β采用全局变量进行参数传递。

global alpha beta x=[0:0.02:2]; y=[-2:0.02:0];

[X,Y]=meshgrid(x,y);

subplot(2,2,1);alpha=1;beta=1; z=fun1(X,Y);mesh(z);

subplot(2,2,2);alpha=2;beta=1; z=fun1(X,Y);mesh(z)

subplot(2,2,3);alpha=1;beta=2;

30


Matlab基础知识点 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:知识产权专业大学毕业实习周记原创范文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: