【转】隐函数绘制并提取数据


隐函数绘制并提取数据

转贴来自:
http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=212297&fromuid=606452

这里直接给出一个例子,就可以看出ezplot提取数据的法子。

简单采用y=x^3这个函数:
  1. >> subplot(121)
  2. >> h1=ezplot(‘x^3’,[-6 6]);
  3. >> subplot(122)
  4. >> h2=ezplot(‘y-x^3’)
可以出来的图形,可以看一下:
![1](https://img-blog.csdn.net/20170510135003407?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc25pa2VybGlp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

2012-11-7 09:13 上传



从图形曲线上看,采用两种方式绘制出来图形有一定的差别:
第一是取值区间,一个变量绘制出来的y轴是自适应的,而两个变量绘制出来的图y轴是默认区间;
第二就是曲线的颜色了,一个变量绘制出来的是蓝色曲线,而两个变量绘制出来图形是绿色曲线。

利用命令查看两条曲线的属性:

  1. >> get(h1,’type’)

  2. ans =

  3. line

  4. >> get(h2,’type’)

  5. ans =

  6. hggroup

  7. >>
复制代码
从调出的曲线属性也可以看出,第一条曲线属性姑且称之为线条,第二条曲线属性就是一个等值线了,也可以认为是线条的集合;其实可以看出,第一条曲线就直接是绘制的y=x^3的曲线,而第二条曲线则是z=y-x^3的等值线图。

这时候可以利用get函数调出h1和h2两条曲线的全部属性,查看曲线的数据存储的位置,这里就不写属性了,内容太多,有兴趣的可以自己调出看看。可以发现h1的数据直接存储在Xdata、Ydata中,而h2的数据则存储在contourMatrix中;知道了数据的存储位置,就好办了,直接可以调出使用了。

  1. >> x=get(h1,’Xdata’);
  2. >> y=get(h1,’Ydata’);
  3. >> C=get(h2,’contourMatrix’);
  4. >> X=C(1,2:end);
  5. >> Y=C(2,2:end);
  6. >> subplot(121)
  7. >> plot(x,y,’r’)
  8. >> subplot(122)
  9. >> plot(X,Y,’color’,[0 0.5 1])
  10. >>
复制代码
出来的图形如下所示:

【转】隐函数绘制并提取数据_第1张图片

untitled.png (3.99 KB, 下载次数: 19)

下载附件  保存到相册

2012-11-7 09:40 上传



为什么提取数据时候要从C矩阵中的第二个数据开始呢?这可以查看调出来的C矩阵数据,可以看出,C矩阵的第一列存储着数据点的信息,第一个为0,我认为它是查找曲线的条数的标志点,第二个数据为曲线数据点的数目;这两个数据可以在有多条曲线时候区别每条曲线的数据作为标志。

后来又看见了别人的方法,对比之下发现上面的法子比较笨:

可以直接利用H=findobj(gca,’type’,’patch’)得到每条曲线句柄的集合,然后直接从句柄的Xdata、Ydata可以得到每条曲线数据点的值;这个方法可以见附件里面整理的。

更多可见我整理的一个文档:




望大家指正!

你可能感兴趣的:(matlab)