Finding a row with a certain condition
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
AA
le 22 Juin 2016
Réponse apportée : Star Strider
le 22 Juin 2016
Assume I have the following matrix.
733458 91 1.01510000000000 1.01680000000000 1.01490000000000 1.01520000000000 1.01585000000000
733458 112 1.01620000000000 1.01620000000000 1.01400000000000 1.01610000000000 1.01510000000000
733458 135 1.01440000000000 1.01540000000000 1.01430000000000 1.01480000000000 1.01485000000000
733458 154 1.01420000000000 1.01580000000000 1.01410000000000 1.01420000000000 1.01495000000000
733458 173 1.01550000000000 1.01570000000000 1.01490000000000 1.01560000000000 1.01530000000000
I want to find the row that contains in column one the value 733458 and that is the closest to 158 in column 2. How can I do that?
1 commentaire
Réponse acceptée
Azzi Abdelmalek
le 22 Juin 2016
A=[733458 91 1.01510000000000 1.01680000000000 1.01490000000000 1.01520000000000 1.01585000000000
733458 112 1.01620000000000 1.01620000000000 1.01400000000000 1.01610000000000 1.01510000000000
733458 135 1.01440000000000 1.01540000000000 1.01430000000000 1.01480000000000 1.01485000000000
733458 154 1.01420000000000 1.01580000000000 1.01410000000000 1.01420000000000 1.01495000000000
733459 173 1.01550000000000 1.01570000000000 1.01490000000000 1.01560000000000 1.01530000000000]
ii=ismember(A(:,1),733458)
B=A(ii,:)
[~,jj]=min(abs(A(ii,2)-158))
out=B(jj,:)
0 commentaires
Plus de réponses (1)
Star Strider
le 22 Juin 2016
One approach:
x = 158;
idx = find((M(:,1) == 733458) & ((x-M(:,2)).^2) == min( (x-M(:,2)).^2));
idx =
4
0 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!