MATLAB Answers

How to find elements of a vector falling between minimum and maximum of an other vector without loop.

조회 수: 2(최근 30일)
Levente Gellért
Levente Gellért 2021년 7월 4일
댓글: Levente Gellért 2021년 7월 6일
Dear Community,
is there other way, than a loop to find elements in a vector b falling between the minimum and the maximum of vector a?
Let's say:
a=(1:1:10);
b=[5.5 11];
for i=1:length(b)
if b(:,i)>min(a) && b(:,i)<max(a)
c(:,i)=1;
else
c(:,i)=0;
end
end
Thanks for your suggestions! lg

채택된 답변

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2021년 7월 4일
Logical indexing is the best option, e.g.:
a=(1:1:10);
b=[5.5 11; 13, 3; 10.5 10];
IDX = find(b>min(a) & b<max(a));
C(IDX)=1;
  댓글 수: 2

댓글을 달려면 로그인하십시오.

추가 답변(3개)

Yazan
Yazan 2021년 7월 4일
c = zeros(size(b));
c(b>min(a(:)) & b<max(a(:))) = 1;

dpb
dpb 2021년 7월 4일
>> iswithin(b,min(a),max(a))
ans =
1×2 logical array
1 0
>>
is a common-enough idiom I have a utility function for the purpose--
>> function flg=iswithin(x,lo,hi)
% returns T for values within range of input
% SYNTAX:
% [log] = iswithin(x,lo,hi)
% returns T for x between lo and hi values, inclusive
flg= (x>=lo) & (x<=hi);
end
It isn't any different than writing the logical expression in line except as a function it has the advantage of moving the test to a lower level that is often very helpful in writing concise, legible expressions at the user level.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by