在MATLAB中从ezplot中提取数据

时间:2015-10-10 18:07:56

标签: matlab extract matlab-figure

我正在尝试从ezplot中提取数据,但是当我绘制提取的数据时,我没有得到相同的图表(ab不同)

有人可以详细说明出了什么问题吗?

以下是代码:

h = @(x,y)(x-((1/0.0175)*(y/5500)*(1+(y/5500)^9)))
a = ezplot(h,[0,700,0,7000]);
t = get(a,'xdata');
M = get(a,'ydata');
theta = transpose(t)
figure
b = plot(theta,M)

ezplot生成

ezplot

plot生成

plot

这是我从轮廓中提取的结果,仍然有一条直线3

2 个答案:

答案 0 :(得分:2)

ezplot返回contour个对象。要提取xy数据,您需要使用get(a,'contourMatrix')。然后,x数据将位于第一列,y数据将位于第二列中

t = get(a,'contourMatrix');
x = t(1, :);
y = t(2, :);

完全按照你的例子我们得到

h = @(x,y)(x-((1/0.0175)*(y/5500)*(1+(y/5500)^9)))
a = ezplot(h,[0,700,0,7000]);

t = get(a,'contourMatrix');
x = t(1, :);
y = t(2, :);

figure;
b = plot(x, y);
xlabel('x');
ylabel('y');
title('({x}-(({1}/{0.0175}) ({y}/{5500}) ({1}+({y}/{5500})^{9}))) = {0}');

结果ezplot

ezplot

plot

相同

plot

答案 1 :(得分:1)

您在致电get(a,'xdata')get(a,'ydata')时收到x and y axis values。这就是你获得直线的原因。 试试这个:

h = @(x,y)(x-((1/0.0175)*(y/5500)*(1+(y/5500)^9)));
ezplot(h,[0,700,0,7000]);
a= get(gca,'Children');
l=get(a,'Children');
t = get(l,'xdata');
M = get(l,'ydata');
theta = transpose(t);
figure
b = plot(theta,M);

来源:

  1. Handle Graphics: Modifying Plots
  2. How do I extract data from MATLAB figures?