逻辑函数和控制结构
- 理解MATLAB中的关系运算符和逻辑运算符
- 能够正确的使用函数find
- 理解和正确使用if/else结构
- 理解和使用 switch/case结构
- 理解和使用for循环和while循环
1.关系运算符和逻辑运算符
1)标量之间比较
>> x = 5;
>> y = 1;
>> x < y
ans =
0
>>
2)矩阵之间比较
>> x = 1:5;
>> y = x - 4;
>> x < y
ans =
0 0 0 0 0
3)逻辑运算符
包括 &(与) ~(非) |(或) xor(亦或)
>> x = 1:5;
>> y = [-2,0,2,4,6];
>> z = [8,8,8,8,8];
>> z > x & z > y
ans =
1 1 1 1 1
注意运算符的优先级。也可以加括号表示清楚
>> (z > x) & (z > y)
ans =
1 1 1 1 1
2.流程图和伪码
伪码是以文字的形式对程序算法进行描述,在编写简单程序时,最好用伪码的方法。编写复杂程序时,最好用流程图和伪码进行程序设计,将伪码作为程序的注释信息。
注意流程图的标准符号。
3.逻辑函数 find
函数find用于查找矩阵中符合某种条件的元素。
>> height = [63,67,65,72,69,78,75];
>> accept = find(height > 65)
accept =
2 4 5 6 7
注意输出的是所求元素在矩阵中的位置标号
如果需要查看该身高的数值,可以用元素序号调出该元素
>> height(accept)
ans =
67 72 69 78 75
还可以使用嵌套命令:
>> height(find(height >= 66))
ans =
67 72 69 78 75
为了增加输出结果的可读性,使用函数disp和fprintf显示输出结果
>> fprintf('Candidate # %4.0f is %4.0f inches tall \n',[accept;height(accept)])
Candidate # 2 is 67 inches tall
Candidate # 4 is 72 inches tall
Candidate # 5 is 69 inches tall
Candidate # 6 is 78 inches tall
Candidate # 7 is 75 inches tall
复杂查找
定义矩阵,第一列表示身高,第二列表示年龄。查找矩阵中第一列数值大于66且第二列数值大于18小于35的元素序号。
>> applications = [63,18;67,19;65,18;72,20;69,36;78,34;75,12]
applications =
63 18
67 19
65 18
72 20
69 36
78 34
75 12
>> pass = find(applications(:,1) >= 66 & applications(:,2) >= 18 & applications(:,2) < 35)
pass =
2
4
6
将序号,身高,年龄合并成为一个矩阵:
>> result = [pass,applications(pass,1),applications(pass,2)]
result =
2 67 19
4 72 20
6 78 34
4.选择结构
1)if 选择结构
很简单没什么可说的,类似Python和C
结构是 if—-elseif—-else——end.
一般来说,if语句适用于标量,而find适用于矩阵。
2)switch/case结构
switch case结构根据一个给定参数的不同取值来执行不同的命令。其结构为:
switch
case option1
code code code
case option2
code code code
case option3
code code code
otherwise
code code code
end
3) menu结构
新建脚本输入
city = menu('请选择一个城市','上海','北京','深圳')
switch city
case 1
disp('上海')
case 2
disp('北京')
case 3
disp('深圳')
end
选择北京,则会出现
>> menu2
city =
2
北京
5.循环结构
1)for 循环
>> for k = [1,2,3]
k
end
k =
1
k =
2
k =
3
>> for k = 1:3
a = 5 ^ k
end
a =
5
a =
25
a =
125
>>
**例**for语句和if语句配合使用,统计90分以上的人数
scores = [76,45,98,97];
count = 0;
for k = 1:length(scores)
if scores(k) > 90
count = count + 1;
end
end
disp(count)
如果索引矩阵是一个二维矩阵,那么每执行循环一次,依次取矩阵中的下一列的值,即在这种情况下索引值是一个列矢量
2)while循环
程序:
k = 0;
while k < 3
k = k + 1;
a(k) = 5 ^ k
end
执行结果:
>> Untitled4
a =
5
a =
5 25
a =
5 25 125
>>
3)break continue
同C语言