查找数字是否在范围内

644次浏览(过去30天)
GOENG
GOENG 2015年4月24日
大家好,我只是想找出一种在range内向量中求一个数的方法。我在试着练习圈圈,但还是做得不好。
%范围为1到10
xRange = [5 2 1 -1 5 67 3]
inside = xRange(1,1):length(xRange)
如果xInside,的范围
删除数量
其他的
商店数字在新的向量/保持在相同的向量
结束
我试着做一些
if xInside==0 xInside(xInside==0) = [];%,它将删除0
结束
但如果0是它的一部分呢?
所以我试着在奶奶
if xInside < max(xRange) | xInside > min(xRange)
将号码转换为NaN。结束
但不知道如何得到最后一部分。

答案(4)

安德烈Bobrov
安德烈Bobrov 2015年4月24日
R = [1,10];
xRange = [5 2 1 -1 5 67 3];
ii = xRange >= r(1) & xRange <= r(2)
out = xRange;
Out (~ii) = nan;

英格丽。
英格丽。 2015年4月24日
我认为你不需要使用for循环来解决这个问题,相反,使用向量化的解决方案更快,更容易阅读
= (xRange < 1);
aboveRange = (xRange > 10);
iRemove = or(低于range,高于overrange);
xRange(iRemove) = [];
应该能成功

Rushikesh四氨基二苯醚
Rushikesh四氨基二苯醚 2015年4月24日
input_vector = 1:10 0;
range_upper_limit = 50;
range_lower_limit = 25;
indices_in_input_vector_within_the_range =相交(找到(input_vector > = range_lower_limit),找到(input_vector < = range_upper_limit))
input_vector (
indices_in_input_vector_within_the_range)

Wupadrasta Santosh Kumar
Wupadrasta Santosh Kumar 2020年10月1日
我的简单看法是:
Range = [1 10];
xRange = [5 2 1 -1 5 67 3];
decisionV = (ones(length(xRange),1)*range - (ones(2,1)*xRange)')>0;
OutDecision = ~xor(decisionV(:,1),decisionV(:,2));
xRange(OutDecision) = [];

类别

了解更多交互控制和回调帮助中心而且文件交换

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!