Plotting array filtered by column?

7 vues (au cours des 30 derniers jours)
Brandon
Brandon le 19 Juil 2023
Commenté : Jon le 2 Août 2023
How would I go about graphing columns filtered by specific results in a third column?
The following table as an example, how would I plot only the second and third column entries that are 1.0000 in the first?
A =
1.0000 1.0000 5.5000
1.0000 2.0000 1.2000
0 3.0000 6.4000
1.0000 4.0000 3.7000
0 5.0000 3.6000
0 6.0000 9.6000
  1 commentaire
Dyuman Joshi
Dyuman Joshi le 19 Juil 2023
Modifié(e) : Dyuman Joshi le 19 Juil 2023
Try comparing with the first column values with 1.000, ideally with a tolerance, and use logical indexing to get the corresponding values in 2nd and 3rd column.

Connectez-vous pour commenter.

Réponse acceptée

Jon
Jon le 19 Juil 2023
So to make @Dyuman Joshi suggestion more concrete
% Define example points
A = [
1.0000 1.0000 5.5000
1.0000 2.0000 1.2000
0 3.0000 6.4000
1.0000 4.0000 3.7000
0 5.0000 3.6000
0 6.0000 9.6000];
% Define tolerance for finding rows to plot
tol = 1e-6;
% plot rows meeting critiera that element in first column is a 1
idl = ismembertol(A(:,1),1,tol); % or alternatively idl = abs(A(:,1)-1)<=tol
plot(A(idl,2),A(idl,3))
  8 commentaires
Dyuman Joshi
Dyuman Joshi le 2 Août 2023
You can also use ismember for that.
Jon
Jon le 2 Août 2023
Yes, that's cleaner and connects back to the beginning of the the thread where the match was approximate and we had to use ismembertol.
% Define example points
A = [
4 1.0000 5.5000
1 2.0000 1.2000
2 3.0000 6.4000
3 4.0000 3.7000
0 5.0000 3.6000
2 6.0000 9.6000];
% Plot rows meeting critiera that element in first column is a 1 or a 2
idl = ismember(A(:,1),[1,2])
idl = 6×1 logical array
0 1 1 0 0 1
plot(A(idl,2),A(idl,3),'o-')

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Preprocessing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by