Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

How to get data from figure?

Asked by Deniz

Deniz (view profile)

on 10 Nov 2013
Latest activity Answered by Walter Roberson

Walter Roberson (view profile)

on 11 Nov 2013

Hi,

I have a curve figure. How can i get the y-data (vector) for given x=linspace(0,R,c) out of figure?

Thanks

0 Comments

Deniz

Deniz (view profile)

Products

No products are associated with this question.

3 Answers

Answer by Walter Roberson

Walter Roberson (view profile)

on 11 Nov 2013
Accepted answer
xd = get(get(gca,'children'),'xdata');  % return the plot data
yd = get(get(gca,'children'),'ydata');
x = 1 : 0.1 : 3;   %places to sample at
y = interp1(xd, yd, x);    %interpolate from stored data at locations to be sampled

0 Comments

Walter Roberson

Walter Roberson (view profile)

Answer by dpb

dpb (view profile)

on 10 Nov 2013
x = get(get(gca,'children'),'xdata');  % return the plot data
y = get(get(gca,'children'),'ydata');
y=y(x(x==linspace(0,R,c)));

Trivial example from keyboard to illustrate...

>> plot(rand(1,3))
>> xdat=get(get(gca,'children'),'xdata');
>> ydat=get(get(gca,'children'),'ydata');
>> xvec=linspace(0,1,2);
>> y=ydat(ismember(xdat,xvec))
y =
  0.8147
>> 

You'll get some other value depending on state of rng at the time but the process should be clear to retrieve the data from the plot and find a location.

NB that if your x values are non-integer values you may need to make the comparison "fuzzy" rather than exact as is shown here.

0 Comments

dpb

dpb (view profile)

Answer by Deniz

Deniz (view profile)

on 10 Nov 2013

this solution doesn't work for me.

plot(rand(1,3))

xdat=get(get(gca,'children'),'xdata')

ydat=get(get(gca,'children'),'ydata')

xvec=linspace(1,3,0.1)

y=ydat(ismember(xdat,xvec))

what i get:

xdat =

     1     2     3

ydat =

    0.0462    0.0971    0.8235

xvec =

   Empty matrix: 1-by-0

y =

   Empty matrix: 1-by-0

I need the y-vector for a x-vektor:xvec=linspace(1,3,0.1)

Any other ideas?

Thanks

1 Comment

Walter Roberson

Walter Roberson (view profile)

on 11 Nov 2013

The last argument to linspace() needs to be a count, not an increment. Use ":" if you want an increment

1 : 0.1 : 3
Deniz

Deniz (view profile)

Contact us