Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
定义的所有变量的各种信息在Workspace窗口中可以显示出来,包括 Name、Size、Bytes和Class四种信息。通过Who和Whos指令显示出来。 (1)Who 用来显示当前工作区中的所有变量的名称。 >>who Your variables are: ans a b c (2)Whos 将以列表的形式显示所有变量的Name、Size、Bytes和Class四种信息。 >>whos Name Size Bytes Class ans 1x1 8 double array a 1x1 8 double array b 1x1 8 double array c 1x1 8 double array Grand total is 4 elements using 4 bytes (3)Clear [Var] 该指令用来清除工作区中的变量。若不带参数则清除所有的变量,若指定参数则清除指定的变量。
3.3 字符串 3.3.1 字符串的构造 一个字符串就是用单引号括起来的简单文本。每一个字符都是数组中的一个元素,每一个字符用两个字节来存储。 >> t='How about this character string?' t = How about this character string? >> whos Name Size Bytes Class t 1x32 64 char array Grand total is 32 elements using 64 bytes 在数值与字符之间的相互转换,可以使用double和char函数。 >> t='abc' t = abcde >> u=double(t) u = 97 98 99 100 101 >> t=char(u+3) t = defgh
因为字符串矩阵,因此它们可以用Matlab中提供的所有处理工具进行处理。例如:因为字符串矩阵,因此它们可以用Matlab中提供的所有处理工具进行处理。例如: >> u=t(end:-1:1) u = hgfed 函数disp允许显示一个字符串而不用输出字符串的变量的变量名。 >> disp([t u]) defghhgfed 字符串也可以是多行的,但是每一行都必须有相同的列数。因此,需要显式的输入空格,使得所有行的长度相同。 >> v=['abc';'def';'gih'] v = abc def gih >> v=['abc' 'def' 'gih'] v = abc def gih
4.1.1 for循环结构 for循环可使一组命令被反复执行一个固定的、预先指定的次数。 For循环的总体结构如下: for x=array (commands) end array中有多少列,在for和end语句之间的(commands)就对应执行多少次。每重复一次,x就被赋值为array的下一个列值;当循环结束时,x=array(:,n)。例如: >> for i=10:-1:1; x(i)=i*i; end >> x x = 1 4 9 16 25 36 49 64 81 100
For循环的其它重要方面是: 1. For循环不能用For循环内重新赋值循环变量n来终止。 » for n=1:10 x(n)=sin(n*pi/10); n=10; end 2. 在For循环内接受任何有效的MATLAB数组。 » data=[3 9 45 6; 7 16 -1 5] data = 3 9 45 6 7 16 -1 5 for n=data x=n(1)-n(2) end
3. For循环可按需要嵌套。 for n=1:5 for m=5:-1:1 A(n,m)=n^2+m^2; end disp(n) end 4. 当有一个等效的数组方法来解给定的问题时,应避免用For循环。 » n=1:10; » x=sin(n*pi/10) 5. 为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。 »x=zeros(1,10); % preallocated memory for x » for n=1:10 x(n)=sin(n*pi/10); end
4.1.2 while循环结构 While 循环以不定的次数求一组语句的值。总体结构如下: while expression (commands) End 只要在表达式expression里的所有元素为真,就执行while和end 语句之间的{commands}。通常,表达式的求值给出一个标量值,但数组值也同样有效。在数组情况下,所得到数组的所有元素必须都为真。
Fibonacci数组的元素满足Fibonacci 规则:a(1)=1,a(2)=1; a(i+1)=a(i-1)+a(i+1)且i>2。现要求该数组中第一个大于10000的元素。 >>a(1)=1;a(2)=1;i=2; while a(i)<=10000 a(i+1)=a(i-1)+a(i); %当现有的元素仍小于10000时,求解下一个元素。 i=i+1; end; >>i,a(i) i = 21 ans = 10946
4.1.3 if-else-end分支结构 很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种If-Else-End结构来提供。最简单的If-Else-End结构是: if expression {commands} end 如果在表达式中的所有元素为真(非零),那么就执行if和end语言之间的{commands}。 一个简单的分支结构。 >>cost=10;number=12; if number>8 sums=number*0.95*cost; end 在表达式包含有几个逻辑子表达式时,即使前一个子表达式决定了表达式的最后逻辑状态,仍要计算所有的子表达式。
假如有两个选择,If-Else-End结构是: if expression commands evaluated if True else commands evaluated if False end 如果表达式为真,执行第一组命令;如果表达式是假,执行第二组命令。 当有三个或更多的选择时,If-Else-End结构采用形式: if expression1 commands evaluated if expression1 is True elseif expression2 commands evaluated if expression2 is True elseif …… . . . else commands evaluated if no other expression is True end
最后的这种形式,只和所碰到的、与第一个真值表达式相关的命令被执行;接下来的关系表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。最后的这种形式,只和所碰到的、与第一个真值表达式相关的命令被执行;接下来的关系表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。 利用If-Else-End结构来控制,得到一种合理的方法来跳出或中断For循环和While循环。 » EPS=1; » for num=1:1000 EPS=EPS/2; if (1+EPS)<=1 EPS=EPS*2 break end end 当执行break 语句时,MATLAB跳到循环外下一个语句。在现在情况下,它返回到MATLAB的提示符并显示EPS。如果一个break语句出现在一个嵌套的For循环或While循环结构里,那么MATLAB只跳出break所在的那个循环,不跳出整个嵌套结构。
4.1.4 switch-case结构 多分支选择结构,格式如下: switch expression case test_expression1 (commands1) case {test_expression2[,test_expression3[,…]]} (commands2) …… otherwise (commandsn) end expression必须是一个标量或者是一个字符串。 >> switch x case {'Y','y'} y='Yes'; case {'N','n'} y='No'; otherwise y='Error'; end