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

x=-3:3;y=x(abs(x)>1);... x=-3:3;
y=x(abs(x)>1);
展开
mickey_991
2013-04-27 · TA获得超过1844个赞
知道小有建树答主
回答量:417
采纳率:100%
帮助的人:243万
展开全部
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返回的是一个逻辑变量
东莞大凡
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间... 点击进入详情页
本回答由东莞大凡提供
刘贺great
2013-04-27 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3829
采纳率:100%
帮助的人:2003万
展开全部
楼上的不对吧,y=x(abs(x)>1);返回的是数组x中绝对值大于1的元素
相当于这样:
clear all;clc;
x=-3:3;
id=find(abs(x)>1)
y=x(id)

id =
1 2 6 7
y =
-3 -2 2 3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式