How to index two vectors according to some condition

조회 수: 2 (최근 30일)
Hamza  Makhamreh
Hamza Makhamreh 2018년 6월 1일
댓글: Hamza Makhamreh 2018년 6월 1일
Hello friends, Let’s say I have two vectors with the same length
x=[ 1 -3 0 -7 5 7 0]
y=[ 9 -4 8 -9 4 1 8].
I want to find out the index (with respect to the two vectors) where both vectors (simultaneously) have closest negative value to zero. In this case, the index will be indx=2 (x=-3 && y=-4). In case if there is no negative values in both vectors like
x=[ 1 -8 0 8 -5 7 0]
y=[ 9 5 0 0 0 1 8]
I want to find where x has largest negative value and y has zero value. In this case indx=5 (x=-5 && y=0)
Hope this question is clear and I’ll appreciate your help.
  댓글 수: 4
Stephen23
Stephen23 2018년 6월 1일
"I said largest negative value"
Generally in English the "largest negative value" would be considered to mean the negative value with the largest magnitude, which is how both Paolo and I understood it.
Hamza  Makhamreh
Hamza Makhamreh 2018년 6월 1일
Yeah I see. Anyways, thanks guys...

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

채택된 답변

the cyclist
the cyclist 2018년 6월 1일
I think this does what you want
% Case 1
x=[ 1 -3 0 -7 5 7 0];
y=[ 9 -4 8 -9 4 1 8];
% % Case 2
% x=[ 1 -8 0 8 -5 7 0];
% y=[ 9 5 0 0 0 1 8];
pairDistance = abs(x+y);
bothNegative = (x<0) & (y<0);
xNegAndYZero = (x<0) & (y==0);
if any(bothNegative)
[~,idx] = min(pairDistance./bothNegative);
else
[~,idx] = min(pairDistance./xNegAndYZero);
end
  댓글 수: 1
Hamza  Makhamreh
Hamza Makhamreh 2018년 6월 1일
Thank you sir. I expected that you are the one who will answer this question. Thanks...

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by