8、逻辑运算
MATLAB的逻辑值有真(TRUE)和假(FALSE), 可以通过逻辑表达式或直接输入得到. 输入和显示时用0表示逻辑假, 1表示逻辑真. 浮点数和逻辑值可以互相转换.
浮点数与逻辑值的相互转换
关系运算及逻辑运算符
符号 |
意义 |
符号 |
意义 |
符号 |
意义 |
> |
大于 |
< |
小于 |
>= |
大于或等于 |
<= |
小于或等于 |
== |
等于 |
~= |
不等于 |
& |
逻辑与 |
| |
逻辑或 |
~ |
逻辑非 |
&& |
逻辑与(短路) |
|| |
逻辑或(短路) |
xor |
逻辑异或 |
A=[0 0 1 1] B=[0 1 0 1] A&B 与 A|B 或 ~A 非 xor(A, B) 异或 G=magic(6) 魔方矩阵 rem(G,2) G的元素整除2的余数 p=(rem(G, 3)==0) 判断元素是否是0 u=p|~p 两个逻辑数组对应元素进行运算 得到: A = 0 0 1 1 B = 0 1 0 1 ans = 1×4 logical 数组 0 0 0 1 ans = 1×4 logical 数组 0 1 1 1 ans = 1×4 logical 数组 1 1 0 0 ans = 1×4 logical 数组 0 1 1 0 G = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 ans = 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 p = 6×6 logical 数组 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 u = 6×6 logical 数组 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
魔方阵是一个矩阵,其中每行、每列以及对角线上的所有元素之和都相等。请注意,魔方阵只能在方阵(即行数等于列数)中生成。在生成魔方阵时,算法会优化使得每行、每列和对角线之和都相等。这使得生成的魔方阵在数学和游戏等领域具有一些特殊的性质和用途。
A = rand(4,4) B = A<0.5 C = A(B) R = find(A<0.5) 得到: A = 0.7094 0.6551 0.9597 0.7513 0.7547 0.1626 0.3404 0.2551 0.2760 0.1190 0.5853 0.5060 0.6797 0.4984 0.2238 0.6991 B = 4×4 logical 数组 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 C = 0.2760 0.1626 0.1190 0.4984 0.3404 0.2238 0.2551 R = 3 6 7 8 10 12 14
9、流程控制语句
(1)if语句
格式一:
if (表达式)
语句组A;
end
格式二:
if (表达式1)
语句组A;
else
语句组B;
end
格式三:
if (表达式1)
语句组A;
elseif (表达式2)
语句组B;
else
语句组C;
end
(2) while语句
格式:
while (表达式)
语句组;
end
举例:求MATLAB相对精度,y不断减小,直至MATLAB分不出1+y与1的差别为止。
y=1; while (1+y)>1 y1=y; y=y/2; end y1 得到: y1 = 2.2204e-16
(3) for语句
格式:
for k= 初值:增量:终值
语句组;
end
举例:显示三角函数表
for x=0:0.1:pi/4 disp([x, sin(x), cos(x), tan(x)]) end 得到: 0 0 1 0 0.1000 0.0998 0.9950 0.1003 0.2000 0.1987 0.9801 0.2027 0.3000 0.2955 0.9553 0.3093 0.4000 0.3894 0.9211 0.4228 0.5000 0.4794 0.8776 0.5463 0.6000 0.5646 0.8253 0.6841 0.7000 0.6442 0.7648 0.8423
10、M程序及M函数
- MATLAB的程序通常用后缀名为m的文本文件来保存, 所以 可以用任何文字编辑工具来创建和编写. MATLAB程序可直接调用M文件并执行.
- M文件分为两种: 一种是M程序, 为用户解决特定的问题编制的, 可以独立执行;另一种是M函数, 用来完成相对独立的子功能, 不能独立执行. MATLAB软件的大部分功能是来自其建立的函数集.
- 在MATLAB中创建M程序和M函数的方法是相同的. 点击菜单“File→New → M-File”, 打开文本编辑器, 程序编写完成后, 点击 按纽 即可执行. 程序的输出结果在命令窗口.
- 通常用户建立的M程序和M函数存放在当前目录中, MATLAB可以自动搜索到.
(1) M程序
M程序特征:
由一般语句组成, 程序中的变量是全局的, 可以在MATLAB命令窗口输入文件名来执行.
举例:
%列出一个求fibonnaci数的程序, 它是一个数列, 从[1,1]开始, 由数列的最后两个元素之和生成新的元素, 依次递推 f=[1,1]; i=1; N=10; while f(i)+f(i+1)<N %循环条件检验 f(i+2)=f(i+1)+f(i); %求fibonnaci数的算式 i=i+1; end f 得到: f = 1 1 2 3 5 8
(2) M函数
M函数特征:
- 由function起头, 后面跟的函数名, 函数名必须与文件名相同.
- 有输入输出变量, 可以进行变量传递.
- 除非用global声明, 程序中的变量均为局部变量, 不保存在工作空间中.
- M函数不能独立运行, 必须由其它程序调用.
一般格式:function y=FunctionName(x)
举例:
%求fibonnaci数的函数 function f = fib(n) if n <= 2 f = 1; else f = fib(n-1) + fib(n-2); end