在MATLAB中从ezplot中提取数据
我试图从在MATLAB中从ezplot中提取数据,matlab,extract,matlab-figure,Matlab,Extract,Matlab Figure,我试图从ezplot中提取数据,但是当我绘制提取的数据时,我没有得到相同的图形(a和b是不同的) 有人能详细说明出了什么问题吗 代码如下: 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
中提取数据,但是当我绘制提取的数据时,我没有得到相同的图形(a
和b
是不同的)
有人能详细说明出了什么问题吗
代码如下:
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
生成
而绘图
产生
这是我从轮廓提取得到的,仍然有一条直线返回一个轮廓
对象。要提取x
和y
数据,需要使用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
为
从plot
您正在调用get(a,'xdata')
和get(a,'ydata')
。这就是你得到直线的原因。
请尝试以下方法:
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);
资料来源:
我建议添加两张图片,看看它们有什么不同。轴限制是否相同?为什么不直接使用
plot
?您好,谢谢您的解释。我只用了你的代码,得到了同一图形上的曲线+直线!我在运行它之前清除了所有内容,但在绘图后添加“.”时,它实际上起作用了!执行全部关闭;清除所有代码>并确保只运行我的代码而不运行其他代码。从这两张图片中可以看出,它非常适合我。@user3767791如果我的答案对你有帮助,如果你能投赞成票或反对票,我将不胜感激。