Finding Minimum Distance Between Points to Find Indexed Variable

4 vues (au cours des 30 derniers jours)
Jonathan Pinko
Jonathan Pinko le 12 Mar 2020
Commenté : Jonathan Pinko le 24 Mar 2020
Hi All,
Two matrices, one here with size 1251x3:
dtamatrix = [xFe54t(:),Fo(:),DeltaFe56(:)];
And another one here, with size 4x1:
Felimitmatrix = [Foyqlimit(:)]
First, I want to find which values of Fo each of my Foyqlimit values are closest to, generating four values of Fo. Then, I want my code to read the specific xFe54t values that correspond with these four values of Fo, generating a 4x1 column vector of xFe54t values.
Can anyone provide any insight as to how to do this?
Thanks,
Joanthan
  2 commentaires
darova
darova le 12 Mar 2020
Too much explanations. Couldn't handle them
Can you make a simple drawing or something?
Jonathan Pinko
Jonathan Pinko le 13 Mar 2020
A drawing would be tough, but I'll try to simplify things. I've changed things a little.
Two matrices, one here with size 1251x3:
dtamatrix = [xFe54t(:),Fo(:),DeltaFe56(:)];
And another one here, with size 4x1:
Felimitmatrix = [Foyqlimit(:)]
First, I want to find which values of Fo each of my Foyqlimit values are closest to, generating four values of Fo. Then, I want my code to read the specific xFe54t values that correspond with these four values of Fo, generating a 4x1 column vector of xFe54t values.
How could I do this?
Thanks for responding.

Connectez-vous pour commenter.

Réponse acceptée

Turlough Hughes
Turlough Hughes le 13 Mar 2020
Modifié(e) : Turlough Hughes le 13 Mar 2020
If you don't have the statistics and machine learning toolbox you can do the following:
[~,idx] = min(abs(dtamatrix(:,2) - Felimitmatrix.')); % for 2016b and later
and alternatively for versions prior to 2016b
[~,idx] = min(abs(bsxfun(@minus,dtamatrix(:,2),Felimitmatrix.'))); % before 2016b
Results:
xFe54t_Flim = dtamatrix(idx,1);
  1 commentaire
Jonathan Pinko
Jonathan Pinko le 24 Mar 2020
I apologize for the late reply, but this worked great.
Thank you!

Connectez-vous pour commenter.

Plus de réponses (1)

darova
darova le 13 Mar 2020
Use pdist2 to find closest points
D = pdist2(Fo(:),Foyqlimit(:)); % every combination (Matrix 1251x4)
[~,ix] = min(D); % closest indices
xFe54t(ix) % values you want

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by