数值数组及向量化运算(3)

2019-04-22 08:05

3.5

关系操作和逻辑操作

关系操作

表3.5-1 关系操作符 含 义 指 令 >= 小于 == 小于等于 ~= 大于 含 义 大于等于 等于 不等于 3.5.1

指 令 < <= > 【例3.5-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.5-2】关系运算应用,在-3pi

subplot(1,2,1),plot(t,y),axis([-9,9,-0.5,1.2]), xlabel('t'),ylabel('y'),title('残缺图形')

subplot(1,2,2),plot(tt,yy),axis([-9,9,-0.5,1.2]) xlabel('tt'),ylabel('yy'),title('正确图形') Warning: Divide by zero.

图3.5-1 采用近似极限处理前后的图形对照

11

3.5.2

指令 & 逻辑操作

表3.5-2 逻辑操作符 含义 指令 ~ 或 含义 与 指令 | 含义 非 指令 xor 含义 与非 【例3.5-3】逻辑操作和关系操作。

A=-2:6,B=zeros(size(A));B(1:2)=1:2 L1=~(A>1) L2=(A>0)&(A<3) C=xor(A,B) A =

-2 -1 0 1 2 3 4 5 6 B =

1 2 0 0 0 0 0 0 0 L1 =

1 1 1 1 0 0 0 0 0 L2 =

0 0 0 1 1 0 0 0 0 C =

0 0 0 1 1 1 1 1 1 LA=(A==0)

LB=(B==0) % cc=~(LA==LB) LA =

0 0 1 0 0 0 0 0 0 LB =

0 0 1 1 1 1 1 1 1 cc =

0 0 0 1 1 1 1 1 1

【例3.5-4】试绘制如图3.5-2最下那幅子图所示的“正弦波sint的削顶半波整流波形”,削顶发生在每个周期的[60?, 120?]之间。

clear

t=linspace(0,3*pi,500);y=sin(t);

z1=((t2*pi)).*y; w=(t>pi/3&t<2*pi/3)+(t>7*pi/3&t<8*pi/3); wn=~w; z2=w*sin(pi/3)+wn.*z1;

subplot(4,1,1),plot(t,y,':r'),axis([0,10,-1.5,1.5]) ylabel('y'),grid on

subplot(4,1,2),plot(t,z1,':r'),axis([0,10,-0.2,1.5]),ylabel('z1') subplot(4,1,3),plot(t,wn,':r'),axis([0,10,-0.2,1.5]),ylabel('wn') subplot(4,1,4),plot(t,z2,'-b'),axis([0,10,-0.2,1.5]),ylabel('z2') xlabel('t')

12

10-101.51z1y123456789100.5001.5112345678910wn0.5001.5112345678910z20.50012345t678910图 3.5-2 逐段解析函数的产生 3.5.3

常用逻辑函数

表3.5-3 常用逻辑函数 分 类 具 体 描 述 all 数组A所有元素都不是0,返回1。 数组非0判断 any 数组A不是全0元素,返回1。 false 按指定大小,创建全0逻辑数组。 生成逻辑数组 true 按指定大小,创建全1逻辑数组。 logical 创建逻辑数组:1对应输入数组中的非0元素,其余都为0。 isempty 是否空阵 isprime 是否质数 isfinite 是否有限数 isreal 是否实数 数据对象判断 isinf isletter 是否无穷大 是否字母(用于字符串) isnan isspace 是否非数 是否空格(用于字符串) isa ishandle 是否图柄 是否指定类别 数据类型判断 ischar islogical 是否字符串 是否逻辑类型 13

isglobal 是否全局变量 isnumeric 是否数值类型 a0=[0 0 0];a1=[0 0 1 2 3];a2=[1 2 3]; b0=all(a0),b1=all(a1),b2=all(a2) c0=any(a0),c1=any(a1),c2=any(a2) b0 = 0 b1 = 0 b2 = 1 c0 = 0 c1 = 1 c2 =

1

习题3

1. 要求在闭区间[0,2?]上产生具有10个等距采样点的一维数组。试用两种不同的指令实

现。

2. 由指令rand('state',0),A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的

位置,分别求出它们的“全下标”和“单下标”。

3. 在使用123作为随机数发生器的初始化状态的情况下,写出产生长度为1000的“等概

率双位(即取-1,+1)取值的随机码”程序指令,并给出 -1码的数目。 4. 已知矩阵A???12??,运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所34???0.5t得结果不同。(1)请分别写出根据B1, B2恢复原矩阵A的程序。(2)用指令检验所

得的两个恢复矩阵是否相等。

cos2t曲线。要求分别采取“标量循环5. 在时间区间 [0,10]中,绘制y?1?e运算法”和“数组运算法”编写两段程序绘图。

6. 先运行clear,format long,rand('state',1),A=rand(3,3),然后根据A写出矩阵两个矩阵:一

个对角阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同。

7. 先运行指令x=-3*pi:pi/15:3*pi; y=x; [X,Y]=meshgrid(x,y); warning off;

Z=sin(X).*sin(Y)./X./Y; 产生矩阵Z。(1)请问矩阵Z中有多少个“非数”数据?(2)用指令surf(X,Y,Z); shading interp观察所绘的图形。(3)请写出绘制相应的“无裂缝”图形的全部指令。

?1k?1?9k?1??2k?2?9k?2??,8. 下面有一段程序,企图用来解决如下计算任务:有矩阵Ak???????????k2k?10k?当k依次取10, 9, 8, 7, 6, 5, 4, 3, 2, 1时,计算矩阵Ak“各列元素的和”,并把此求和

?14?28???结果存放为矩阵Sa的第k行。例如k?3时,A阵为25?29,此时它各列元????36?30??素 的和是一个(1?10)行数组?615?87?,并把它保存为Sa的第3行。问题:该

段程序的计算结果对吗?假如计算结果不正确,请指出错误发生的根源,并改正之。

14


数值数组及向量化运算(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:安顺市环境保护局突发环境事件应急预案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: