I plot a figure by using a function from a package.
Now I'd like to know the x and y values once I plot the curve.
Where are they stored

 Accepted Answer

Try this:
F = openfig('untitled.fig');
ax = gca;
lines = findobj(ax, 'Type','Line');
for k = 1:numel(lines)
x{k,:} = lines(k).XData;
y{k,:} = lines(k).YData;
end
The x- and y-data for each line are in their appropriate cell arrays.

4 Comments

that works great,
One last thing fi you could.
I need to plot but with a diffferent x
x = -0.2:0.01:0.8;
Can you just write me a piece of code for that, please?
Something like this
for k = 1:numel(lines)
y{k,:} = lines(k).YData;
plot(FlowVector,y{k,:})
hold on
end
the x is always the same
I am not certain what you intend withh ‘...plot but with a different x
Two possibilities:
F = openfig('Puntitled.fig');
ax = gca;
lines = findobj(ax, 'Type','Line');
for k = 1:numel(lines)
x{k,:} = lines(k).XData;
y{k,:} = lines(k).YData;
end
newx = -0.2:0.01:0.8;
for k = 1:numel(lines)
newy{k,:} = interp1(x{k}, y{k}, newx, 'linear','extrap'); % Interpolate-Extrapolate
end
or:
figure
plot(newx, cell2mat(newy)) % Plot Interpolated Values
grid
figure
plot(cell2mat(x).', cell2mat(y).') % Plot Previous Data With New X-Axis Ticks
xt = get(gca, 'XTick');
set(gca, 'Xtick',xt, 'XTickLabel',newx)
grid
One of these should do what you want.
for k = 1:numel(lines)
figure(4)
plot(FlowVector,y{k,:})
grid on
hold on
end
here's is the solution.
Man, thank you a lot, you really helped me.
I couldn't figured out without your help.
As always, my pleasure!
That’s what I’m here for!

Sign in to comment.

More Answers (0)

Products

Release

R2014b

Tags

Community Treasure Hunt

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

Start Hunting!