How to index two vectors according to some condition
2 ビュー (過去 30 日間)
古いコメントを表示
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
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.
採用された回答
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
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!