3.13 关系操作和逻辑操作
3.13.1 关系操作
【 * 例 3.13.1 -1 】关系运算示例。
A=1:9,B=10-A,r0=(A<4),r1=(A==B)
A =
1 2 3 4 5 6 7 8 9
B =
9 8 7 6 5 4 3 2 1
r0 =
1 1 1 0 0 0 0 0 0
r1 =
0 0 0 0 1 0 0 0 0
【 * 例 3.13.1 -2 】关系运算运用之一:求近似极限,修补图形缺口。
t=-2*pi:pi/10:2*pi; % 该自变量数组中,存在 0 值。
y=sin(t)./t; % 在 t=0 处,按 IEEE 规则,计算将产生 NaN
tt=t+(t==0)*eps; % 逻辑数组参与运算,使 0 元素被一个“机器零”小数代替。
yy=sin(tt)./tt; % 用数值可算的 sin(eps)/eps 近似替代 sin(0)/0 极限 .
subplot(1,2,1),plot(t,y),axis([-7,7,-0.5,1.2]),
xlabel('t'),ylabel('y'),title(' 残缺图形 ')
subplot(1,2,2),plot(tt,yy),axis([-7,7,-0.5,1.2])
xlabel('t'),ylabel('yy'),title(' 正确图形 ')
Warning: Divide by zero.

图 3.13.2 -2 极限处理前后的图形对照
3.13.2 逻辑操作
【 * 例 3.13.2 -1 】逻辑操作示例。
A=1:9,L1=~(A>5) % 判断 A 中,哪些元素不大于 5
L2=(A>3)&(A<7) % 判断 A 中,哪些元素大于 3 小于 7
A =
1 2 3 4 5 6 7 8 9
L1 =
1 1 1 1 1 0 0 0 0
L2 =
0 0 0 1 1 1 0 0 0
【 * 例 3.13.2 -2 】逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。
t=linspace(0,3*pi,500);y=sin(t);% 产生正弦波
% 处理方法一:从自变量着手进行逐段处理。
z1=((t<pi)|(t>2*pi)).*y; % 获得整流半波 <3>
w=(t>pi/3&t<2*pi/3)+(t>7*pi/3&t<8*pi/3);% 关系逻辑运算和数值运算 <4>
w_n=~w; % <5>
z2=w*sin(pi/3)+w_n.*z1; % 获得削顶整流半波 <6>
subplot(1,3,1),plot(t,y,':r'),ylabel('y')
subplot(1,3,2),plot(t,z1,':r'),axis([0 10 -1 1])
subplot(1,3,3),plot(t,z2,'-b'),axis([0 10 -1 1])

图 3.13.2 -1 逐段解析函数的产生
% 处理方法二:从函数量着手进行逐段处理。
z=(y>=0).*y; % 正弦整流半波 <11>
a=sin(pi/3);
z=(y>=a)*a+(y<a).*z; % 削顶的正弦整流半波 <13>
plot(t,y,':r');hold on;plot(t,z,'-b')
xlabel('t'),ylabel('z=f(t)'),title(' 逐段解析函数 ')
legend('y=sin(t)','z=f(t)'),hold off

图 3.13.2 -2 逐段解析函数的生成和表现