第三讲 MATLAB编程基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖ 其他流程控制
▪ break语句 ▪ continue语来自百度文库 ▪ return语句
for循环
❖ for循环的语法
for index=expression
loopbody
end
▪ index是循环变量,expression是循环控制表达式,在for和end之前的执行语句为 循环体loopbody
❖ for循环的执行顺序
if condition_1
statements_1
if condition_2
statements_2
end
end
▪ 在大多数情况下,执行一个算法,即可以用多个else if语句,也可以用if语句的 嵌套。用户可以根据喜好选择相应的方式。
switch结构
❖ 用法
▪ switch结构被称为开关结构。用户可以根据一个单精度整形数,字符或逻辑表 达式的值来选择执行特定的语句段。其基本语法格式为:
else
fprintf ('The equation has two distinct real roots. \n');
end
if结构
❖ if的嵌套使用
▪ if 结构的使用非常灵活,需要注意的是,它必须含有一个if语句和一个end语句。 中间可以有任意个elseif 语句,也可以有一个else语句。这样我们可以根据实际 的需要确定选择哪种结构。同时,if语句也是可以嵌套使用的,如果if 结构完 全是另一个if结构的一个语句块,我们就称两者为嵌套关系,例如二重嵌套的 一般语法格式如下:
%这里可以有多个else if
statements_2
else
statements_3
end
end
在这种结构控制下,当运行到程序的某一条条件表达式为真(非0) 时,则执行与之相关的语句段,而后系统不再检查其他的条件表达式,系 统将跳过if结构中的其他语句。需要注意的是,在一个if 结构中,可以有任 意个elseif 语句,但else语句最多有一个或者没有。
end
switch结构
❖ 例子
使用switch结构设计MATLAB程序,通过输入英文星期单词,将其转换成相应 的中文,例如输入“Sunday”,输出“星期日”
day=input('请输入英文日期如:\n','s');
switch day
case {'Sunday', 'sunday'} disp('星期日');
▪ 变量index读取表达式expression,其在一般情况下是一个向量,用冒号表达式 表示为start:increment:end,若采用默认的步长1,则表示为start:end;在这种情 况下,循环变量index每次从向量expression中读取一个元素,然后程序执行循 环体(loopbody),直至向量expression中所有元素读取完毕
▪ 一般而言,向量expression中有多少元素,循环体就执行多少次 ▪ 特别的,如果expression是一个矩阵,则index每次读取矩阵的一列,直至所有
列读取完毕,亦即循环次数为矩阵的列数
for循环
❖ 利用for循环求阶乘6!
下面的循环控制表达式将会产生行向量[6 5 4 3 2 1],循环变量i依次读取这些 数值实现阶乘运算。
例子 switch结构使用示例——switch_examp2.m。
001 clear all
002
003 var = input('Input a Numer:');
004 switch var
005 case 1
006
disp('1')
007 case {2,3,4}
008
disp('2 or 3 or 4')
while condition loopbody
end
❖ 利用while计算1+2+3+4+5
❖ >> t=1;sum=0; ❖ >> while t<=5 ❖ sum=sum+t; ❖ t=t+1; ❖ end ❖ >> sum ❖ sum = ❖ 15
while循环
❖ 利用while循环求Fibonacci数列的小于100的前n项
Fibonacci数列指的是这样的一个数列:1、1、2、3、5、8、13、21、…这个数
列从第三项开始,每一项都等于前两项之和。那么我们可以通过循环的方式来实现
这个数列的求解,且终止条件设为要求取数列的最后一项必须小于100,因而可以
在语句段中设置一个flag,判断已经求得数列的最后两项之和是否超过100,如果没
case {'Friday','friday'} disp('星期五');
case {'Saturday','saturday'} disp('星期六');
otherwise disp('Error');
end
❖ A=input(提示信息,选项);
❖ 选项用于决定用户的输入是作为一个表达式看待,还是作为一个普通的字 符串看待 . 选项如果有则为’s’,表普通字符串。
>> N=6; >> S=1; >> for i=N:-1:1 S=S*i; end >> S S=
720
❖ 循环的嵌套
for循环可以嵌套使用,如果一个循环完全出现在另一个循环当中,我们称这 两个循环为带嵌套的循环。下面的例子用两重for循环嵌套来计算九九乘法表并打 印结果
>> for i=1:9 for j=1:i fprintf('%d*%d=%d ',i,j,i*j); end fprintf('\n'); end
第二章 MATLAB程序设计(1)
MATLAB中的控制结构
❖ 循环结构
循环结构允许重复执行一系列语句,需要被重复执行的语句称为循环体。循环 结构的执行方式为首先判断是否达到循环终止条件,如果没有,则继续执行循环体, 如果已经达到则跳出循环。 ▪ for循环 ▪ while循环
❖ 选择结构
▪ if结构 ▪ switch结构 ▪ try/catch结构
if (b^2 - 4*a*c) < 0
fprintf('The equation has two complex roots.\n');
elseif (b^2 - 4*a*c) == 0
fprintf ('The equation has two identical real roots. \n');
❖ fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为: ❖ 数据的格式化输出:fprintf(fid, format, variables) ❖ 按指定的格式将变量的值输出到屏幕或指定文件 ❖ fid为文件句柄,若缺省,则输出到屏幕 ❖ 1 for standard output (the screen) or 2 for standard error. If FID is
switch (switch_expr)
case case_expr_1,
statements_1
case case_expr_1,
statements_2
…
otherwise,
statements_other
end
▪ 在这个控制结构中,如果switch_expr的值与case_expr_1相符,那么第一个语句 段statements_1将会被执行,然后程序将会跳转到switch结构结束语句end后的第 一个语句。如果switch_expr的值与case_expr_2相符,那么第二个语句段将会被 执行,然后程序将会跳到switch结构结束语句end后的第一个语句。在这个结构 中,otherwise语句段是可选的。如果它存在的话,当switch_expr的值与其他所 有的选项都不相符时,语句段statements_other将会被执行。如果它不存在,且 witch_expr的值与所有的选项都不相符时,结构中的任何一个语句段都不会被 执行。
>> x=rand(); if x>0.5
fprintf('x is greater than 0.5\n'); else
fprintf('x is less than 0.5\n') end
if结构
❖ if-elseif-else-end结构
if condition_1
statements_1
else if condition_2
i=i+1; f(i)=f(i-1)+f(i-2); flag=f(i)+f(i-1);
%Fibonacci数列项的求取方法 %循环终止判断变量已求取数列的最后两项的和
end
❖ if-end结构
if condition statements
end
if结构
其中当条件表达式condition的值为真(非0)时执行语句段statements,否则不 执行。例如我们判断一个学生是否通过某课程是根据其到课率attendance和成绩 grade来判断,可以设置if判断语句如下:
>> if ((attendance >= 0.90) && (grade >= 60))
pass = 1;
end
if结构
❖ if-else-end结构
if condition statements_1
else statements_2
end
其中当条件表达式condition的值为真(非0)时执行语句段statements_1,否则 则执行语句段statements_2。例如我们利用rand()函数产生随机数x,而后判断其与 0.5的大小并打印结果的语句段如下:
omitted, output goes to the screen. ❖ format用来指定数据输出时采用的格式 ❖ %d 整数 ❖ %e 实数:科学计算法形式 ❖ %f 实数:小数形式 ❖ %g 由系统自动选取上述两种格式之一 ❖ %s 输出字符串
while循环
❖ while循环的语法
▪ while为条件循环语句。while循环的循环终止条件通常是对循环条件表达式的 判断,只要循环条件表达式为真,则循环体就重复执行,直到循环条件表达式 为假。所以while循环的次数不确定。while循环的语法是:
有,则循环继续,如果已经超过则循环终止,那么可以在MATLAB命令窗口输入如
下命令完成这个操作:
>> f(1)=1;f(2)=1;
%Fibonacci数列的前两项
>> i=2;
%项数标志
>> flag=0;
%循环终止判断标志变量
>> while (flag<100)
%终止条件是循环终止判断标志变量小于100
switch结构
❖ 多值匹配
▪ 需要注意的是,如果switch_expr有很多值可以导致相同代码的执行,那么这些 值可以括在同一括号内,如果这个switch表达式和括号中任何一个值相匹配, 那么这个语句段将会被执行
switch (switch_expr) case {case_expr_1, case_expr_2, case_expr_3}, statements otherwise, statements_other
case {'Monday', 'monday'} disp('星期一');
case {'Tuesday', 'tuesday'} disp('星期二');
case {'Wednesday','wednesday'} disp('星期三');
case {'Thursday','thursday'} disp('星期四');
▪ 如果一个错误发生在这个结构的try语句块中,那么程序将会执行catch语句块, 程序将不会中断。它将帮助程序员控制程序中的错误,而不用使程序中断。 try/catch 结构的基本语法如下:
try
statements_try
catch
statements_catch
end
▪ 当程序运行到try/catch语句段,在try语句段statements_try中的语句将会被执行。 如果没有错误出现,程序将跳过catch语句段。如果错误发生在语句段 statements_try,那么程序将中止执行try 语句块,并立即执行catch语句段。 try/catch结构也可以嵌套使用。即在statements_try语句段或者在statements_catch 语句段中均可使用try/catch结构
009 case 5
010
disp('5')
011 otherwise
012
disp('something else')
013 end
try/catch结构
❖ 用法
▪ try/catch 结构是选择结构的一种特殊形式,用于捕捉错误。一般地,当一个 MATLAB程序在运行时遇到了一个错误,这个程序就会中止执行。try/catch 结 构修改了这个默认行为
▪ break语句 ▪ continue语来自百度文库 ▪ return语句
for循环
❖ for循环的语法
for index=expression
loopbody
end
▪ index是循环变量,expression是循环控制表达式,在for和end之前的执行语句为 循环体loopbody
❖ for循环的执行顺序
if condition_1
statements_1
if condition_2
statements_2
end
end
▪ 在大多数情况下,执行一个算法,即可以用多个else if语句,也可以用if语句的 嵌套。用户可以根据喜好选择相应的方式。
switch结构
❖ 用法
▪ switch结构被称为开关结构。用户可以根据一个单精度整形数,字符或逻辑表 达式的值来选择执行特定的语句段。其基本语法格式为:
else
fprintf ('The equation has two distinct real roots. \n');
end
if结构
❖ if的嵌套使用
▪ if 结构的使用非常灵活,需要注意的是,它必须含有一个if语句和一个end语句。 中间可以有任意个elseif 语句,也可以有一个else语句。这样我们可以根据实际 的需要确定选择哪种结构。同时,if语句也是可以嵌套使用的,如果if 结构完 全是另一个if结构的一个语句块,我们就称两者为嵌套关系,例如二重嵌套的 一般语法格式如下:
%这里可以有多个else if
statements_2
else
statements_3
end
end
在这种结构控制下,当运行到程序的某一条条件表达式为真(非0) 时,则执行与之相关的语句段,而后系统不再检查其他的条件表达式,系 统将跳过if结构中的其他语句。需要注意的是,在一个if 结构中,可以有任 意个elseif 语句,但else语句最多有一个或者没有。
end
switch结构
❖ 例子
使用switch结构设计MATLAB程序,通过输入英文星期单词,将其转换成相应 的中文,例如输入“Sunday”,输出“星期日”
day=input('请输入英文日期如:\n','s');
switch day
case {'Sunday', 'sunday'} disp('星期日');
▪ 变量index读取表达式expression,其在一般情况下是一个向量,用冒号表达式 表示为start:increment:end,若采用默认的步长1,则表示为start:end;在这种情 况下,循环变量index每次从向量expression中读取一个元素,然后程序执行循 环体(loopbody),直至向量expression中所有元素读取完毕
▪ 一般而言,向量expression中有多少元素,循环体就执行多少次 ▪ 特别的,如果expression是一个矩阵,则index每次读取矩阵的一列,直至所有
列读取完毕,亦即循环次数为矩阵的列数
for循环
❖ 利用for循环求阶乘6!
下面的循环控制表达式将会产生行向量[6 5 4 3 2 1],循环变量i依次读取这些 数值实现阶乘运算。
例子 switch结构使用示例——switch_examp2.m。
001 clear all
002
003 var = input('Input a Numer:');
004 switch var
005 case 1
006
disp('1')
007 case {2,3,4}
008
disp('2 or 3 or 4')
while condition loopbody
end
❖ 利用while计算1+2+3+4+5
❖ >> t=1;sum=0; ❖ >> while t<=5 ❖ sum=sum+t; ❖ t=t+1; ❖ end ❖ >> sum ❖ sum = ❖ 15
while循环
❖ 利用while循环求Fibonacci数列的小于100的前n项
Fibonacci数列指的是这样的一个数列:1、1、2、3、5、8、13、21、…这个数
列从第三项开始,每一项都等于前两项之和。那么我们可以通过循环的方式来实现
这个数列的求解,且终止条件设为要求取数列的最后一项必须小于100,因而可以
在语句段中设置一个flag,判断已经求得数列的最后两项之和是否超过100,如果没
case {'Friday','friday'} disp('星期五');
case {'Saturday','saturday'} disp('星期六');
otherwise disp('Error');
end
❖ A=input(提示信息,选项);
❖ 选项用于决定用户的输入是作为一个表达式看待,还是作为一个普通的字 符串看待 . 选项如果有则为’s’,表普通字符串。
>> N=6; >> S=1; >> for i=N:-1:1 S=S*i; end >> S S=
720
❖ 循环的嵌套
for循环可以嵌套使用,如果一个循环完全出现在另一个循环当中,我们称这 两个循环为带嵌套的循环。下面的例子用两重for循环嵌套来计算九九乘法表并打 印结果
>> for i=1:9 for j=1:i fprintf('%d*%d=%d ',i,j,i*j); end fprintf('\n'); end
第二章 MATLAB程序设计(1)
MATLAB中的控制结构
❖ 循环结构
循环结构允许重复执行一系列语句,需要被重复执行的语句称为循环体。循环 结构的执行方式为首先判断是否达到循环终止条件,如果没有,则继续执行循环体, 如果已经达到则跳出循环。 ▪ for循环 ▪ while循环
❖ 选择结构
▪ if结构 ▪ switch结构 ▪ try/catch结构
if (b^2 - 4*a*c) < 0
fprintf('The equation has two complex roots.\n');
elseif (b^2 - 4*a*c) == 0
fprintf ('The equation has two identical real roots. \n');
❖ fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为: ❖ 数据的格式化输出:fprintf(fid, format, variables) ❖ 按指定的格式将变量的值输出到屏幕或指定文件 ❖ fid为文件句柄,若缺省,则输出到屏幕 ❖ 1 for standard output (the screen) or 2 for standard error. If FID is
switch (switch_expr)
case case_expr_1,
statements_1
case case_expr_1,
statements_2
…
otherwise,
statements_other
end
▪ 在这个控制结构中,如果switch_expr的值与case_expr_1相符,那么第一个语句 段statements_1将会被执行,然后程序将会跳转到switch结构结束语句end后的第 一个语句。如果switch_expr的值与case_expr_2相符,那么第二个语句段将会被 执行,然后程序将会跳到switch结构结束语句end后的第一个语句。在这个结构 中,otherwise语句段是可选的。如果它存在的话,当switch_expr的值与其他所 有的选项都不相符时,语句段statements_other将会被执行。如果它不存在,且 witch_expr的值与所有的选项都不相符时,结构中的任何一个语句段都不会被 执行。
>> x=rand(); if x>0.5
fprintf('x is greater than 0.5\n'); else
fprintf('x is less than 0.5\n') end
if结构
❖ if-elseif-else-end结构
if condition_1
statements_1
else if condition_2
i=i+1; f(i)=f(i-1)+f(i-2); flag=f(i)+f(i-1);
%Fibonacci数列项的求取方法 %循环终止判断变量已求取数列的最后两项的和
end
❖ if-end结构
if condition statements
end
if结构
其中当条件表达式condition的值为真(非0)时执行语句段statements,否则不 执行。例如我们判断一个学生是否通过某课程是根据其到课率attendance和成绩 grade来判断,可以设置if判断语句如下:
>> if ((attendance >= 0.90) && (grade >= 60))
pass = 1;
end
if结构
❖ if-else-end结构
if condition statements_1
else statements_2
end
其中当条件表达式condition的值为真(非0)时执行语句段statements_1,否则 则执行语句段statements_2。例如我们利用rand()函数产生随机数x,而后判断其与 0.5的大小并打印结果的语句段如下:
omitted, output goes to the screen. ❖ format用来指定数据输出时采用的格式 ❖ %d 整数 ❖ %e 实数:科学计算法形式 ❖ %f 实数:小数形式 ❖ %g 由系统自动选取上述两种格式之一 ❖ %s 输出字符串
while循环
❖ while循环的语法
▪ while为条件循环语句。while循环的循环终止条件通常是对循环条件表达式的 判断,只要循环条件表达式为真,则循环体就重复执行,直到循环条件表达式 为假。所以while循环的次数不确定。while循环的语法是:
有,则循环继续,如果已经超过则循环终止,那么可以在MATLAB命令窗口输入如
下命令完成这个操作:
>> f(1)=1;f(2)=1;
%Fibonacci数列的前两项
>> i=2;
%项数标志
>> flag=0;
%循环终止判断标志变量
>> while (flag<100)
%终止条件是循环终止判断标志变量小于100
switch结构
❖ 多值匹配
▪ 需要注意的是,如果switch_expr有很多值可以导致相同代码的执行,那么这些 值可以括在同一括号内,如果这个switch表达式和括号中任何一个值相匹配, 那么这个语句段将会被执行
switch (switch_expr) case {case_expr_1, case_expr_2, case_expr_3}, statements otherwise, statements_other
case {'Monday', 'monday'} disp('星期一');
case {'Tuesday', 'tuesday'} disp('星期二');
case {'Wednesday','wednesday'} disp('星期三');
case {'Thursday','thursday'} disp('星期四');
▪ 如果一个错误发生在这个结构的try语句块中,那么程序将会执行catch语句块, 程序将不会中断。它将帮助程序员控制程序中的错误,而不用使程序中断。 try/catch 结构的基本语法如下:
try
statements_try
catch
statements_catch
end
▪ 当程序运行到try/catch语句段,在try语句段statements_try中的语句将会被执行。 如果没有错误出现,程序将跳过catch语句段。如果错误发生在语句段 statements_try,那么程序将中止执行try 语句块,并立即执行catch语句段。 try/catch结构也可以嵌套使用。即在statements_try语句段或者在statements_catch 语句段中均可使用try/catch结构
009 case 5
010
disp('5')
011 otherwise
012
disp('something else')
013 end
try/catch结构
❖ 用法
▪ try/catch 结构是选择结构的一种特殊形式,用于捕捉错误。一般地,当一个 MATLAB程序在运行时遇到了一个错误,这个程序就会中止执行。try/catch 结 构修改了这个默认行为