MATLAB系列03:分支语句和编程设计
3. 分支语句和编程设计
MATLAB语句有两大类控制顺序结构:
- 选择结构,用于选择执行特定的语句
- 循环结构,用于重复执行特定的代码
3.1 自上而下的编程方法简介
所谓的自顶向下的编程方法,本质上就是编写程序的视角从整体的宏观性逐层进入具体的微观性的一种编程思想。我们编写程序时一开始不用思考得事无巨细,把所有细节都想清楚;也不要面条式的想到哪里写到哪里。而应该是自顶向下的,从一个大的粗的核心的任务开始,逐级细分,最后再完成最底层的具体实现。
程序设计的基本步骤:
- 清晰地陈述出你要解决的问题。
- 确定程序所需地输入量和程序所产生的输出量。
- 为你的程序设计算法
- 将算法转化为 MATLAB 语句
- 调试MATLAB语句
3.2 伪代码的应用
伪代码是 MATLAB 和英语的混合体。和MATLAB 一样,它是结构化的,一行表达一个明确的意思或代码的片段,但每一行的描述用的是英语或其他人类语言。伪代码的每一行都应用普通简单且易于理解的英语或中文描述。因为修改简单灵活,所以伪代码在开发算法的过程中非常的有用。
3.3 关系运算符和逻辑运算符
MATLAB 把 0 值作为结果 false,把所有的非 0 值作为结果 ture。
3.3.1 关系运算符
关系运算符是指两数值或字符操作数的运算符,这种运算将会根椐两操作数的关系产生结果 true 或 false。关系运算的基本形式如下
a 1 o p a 2 a_1\,op\,a_2 a1opa2
关系运算符也可用于标量和数组的比较,示例
>> a=[1 0;-2 1];
>> b=0;
>> a>b
ans =
2×2 logical 数组
1 0
0 1
注意因为字符串实际上是字符的数组,关系运算符也比较两个相同长度的字符串。如果它们有不同的长度,比较运算将会产生一个错误。
编程隐患:
不要混淆关系运算符(==)和赋值运算符(=)
3.3.2 小心==和~=运算符
等于运算符(==)如果两变量值相同将会返回变量值 1,如果不同将返回 0。不等运算符(~=)如果两变量值不同则返回 1,相则返回 0。用这两个运算符比较两个字符串他是安全的,不会出现错误。但对两个数字数据的比较,将可能产生异想不到的错误。两个理论上相等的数不能有一丝一毫的差别,而在计算机计算的过程中存在修正误差,从而可能在判断相等与不相等的过程中产生错误, 这种错误叫做round off 错误。例如
>> a=0;
>> b=sin(pi);
>> a==b
ans =
logical
0
因此在检测两数值是否相等时,要考虑是否由于修正误差可能会使两个本来应该相等的值不相等了。这时可以在修正误差的范围内,判断它们是否近似相等。
3.3.3 逻辑运算符

标量和数组,数组和数组之间都可以进行逻辑运算,示例:
>> a=[1 0;0 1];
>> b=0;
>> a & b
ans =
2×2 logical 数组
0