matlab y=x(abs(x)>1)帮忙给解释下

问题描述:

matlab y=x(abs(x)>1)帮忙给解释下
x=-3:3;
y=x(abs(x)>1);

abs(x)返回一个与x同样长的数组,每个元素取绝对值,得到3,2,1,0,1,2,3abs(x) > 1返回与x同样长的逻辑数组,表示对abs(x)这个数组每个元素k做判断k>1,如果abs(x)第i个元素>1,那么第i个元素是TRUE,否则是FALSE得到T T F ...x=-3:3;x= -3 -2 -1 0 1 2 3abs(x)>1运行结果为ans= 1 1 0 0 0 1 1那是不是 y=x(1 1 0 0 0 1 1)这句为什么是将真值对应的元素取出来输入以下代码:x = -3:3;l = abs(x)>1;p = [1 1 0 0 0 1 1];whos; %上面l和p的形式上是一样的,但是通过whos查看变量类型,l的变量类型是logical,即逻辑变量,p的变量类型是doublex(p) %程序报错,因为p是实数数组,p被认为是下标。但matlab中下标从1开始,p中含有0p = logical(p) % 将p变成逻辑数组x(p) %得到正确结果关键在于abs(x)>1返回的是一个逻辑变量