作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 22:58:02
matlab y=x(abs(x)>1)帮忙给解释下
x=-3:3;
y=x(abs(x)>1);
abs(x)返回一个与x同样长的数组,每个元素取绝对值,得到
3,2,1,0,1,2,3
abs(x) > 1
返回与x同样长的逻辑数组,表示对abs(x)这个数组每个元素k做判断k>1,如果abs(x)第i个元素>1,那么第i个元素是TRUE,否则是FALSE
得到
T T F F F T T
最后, y = x(abs(x) >1)把x中所有TRUE对应的元素取出.这里是第1,2,6,7位元素
所以
y = [-3 -2 2 3]
再问: x=-3:3; x= -3 -2 -1 0 1 2 3 abs(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的变量类型是double x(p) %程序报错,因为p是实数数组,p被认为是下标。但matlab中下标从1开始,p中含有0 p = logical(p) % 将p变成逻辑数组 x(p) %得到正确结果 关键在于abs(x)>1返回的是一个逻辑变量