Extracting Data Points From Ezplot

6 vues (au cours des 30 derniers jours)
Jack Smith
Jack Smith le 10 Nov 2015
Commenté : Star Strider le 10 Nov 2015
I am plotting the following implicit function using the following code:
ezplot('(y^2)/2 + (((x^2)*y)^(1-1.2))/(1.2-1) - 2/x - 1/(1.2-1) +3/2',[0 6 0 4])
Which produces the following double-valued graphical solution:
However, I am only interested in the line that begins ~0 and increases with x. What I want to do is extract the x and corresponding y values for this line, and, despite a number of attempts, have failed in doing so thus far. Any help would be greatly appreciated.
  1 commentaire
Star Strider
Star Strider le 10 Nov 2015
Rather than explot, use ezsurf to see what the routine actually calculates. Then choose the appropriate row and column of ‘XData’, ‘YData’ and ‘ZData’. (This is in R2015b. I haven’t tried it in R2014a or earlier.)

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 10 Nov 2015
The following might have changed as of R2014b.
In R2014a or earlier (and maybe later),
ezh = ezplot('(y^2)/2 + (((x^2)*y)^(1-1.2))/(1.2-1) - 2/x - 1/(1.2-1) +3/2',[0 6 0 4]);
ezch = get(ezh,'Children');
xd1 = get(ezch(1),'XData');
xd2 = get(ezch(2),'XData');
yd1 = get(ezch(1),'YData');
yd2 = get(ezch(2),'YData');
first_part_mask = xd2 <= 1.0;
first_x = xd2(first_part_mask);
first_y = yd2(first_part_mask);
second_part_mask = xd1 > 1.0;
second_x = xd1(second_part_mask);
second_y = yd1(second_part_mask);
both_x = [first_x(:); second_x(:)];
both_y = [first_y(:); second_y(:)];
Now the line you want is both_x together with both_y

Plus de réponses (0)

Catégories

En savoir plus sur Line Plots 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!

Translated by