加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab获取等高线的数据

(2012-03-02 11:25:39)
标签:

matlab

杂谈

分类: 学科知识总结
contour(X,Y,Z,v)画出Z在向量v所有值处的等高线,如只想画出Z在i处的等高线,则调用contour(X,Y,Z,[i,i])。如果没有图形,可以将contour3试试看。
另外,若想获得某一等高线处的具体数据,则用[c,h]=contour(X,Y,Z,[i,i]).其中c中即包含等高线的信息,即对应Z=i处的xdata向量和ydata向量。直接调用c就可以了,一般情况下xdata向量和ydata向量过长,显示的时候是分段显示的dim1,dim2...表示接下来一段显示的[xdata,ydata]的长度,如下:
C = [value1 xdata(1) xdata(2)...  value2 xdata(1) xdata(2)...;  
     dim1   ydata(1) ydata(2)...  dim2   ydata(1) ydata(2)...]
为方便查看,调用C'更清晰。

另外,读取任一matlab的fig图的数据的方法如下:

open('D:\design_soft\work\w=60.fig');  %打开图
Ih=findall(gca,'type','line');   %获得曲线的句柄
xc=get(Ih,'xdata'); 
yc=get(Ih,'ydata');

另外注意:contour(Z) draws a contour plot of matrix Z, where Z is interpreted as heights with respect to the x-y plane. Z must be at least a 2-by-2 matrix. The number of contour levels and the values of the contour levels are chosen automatically based on the minimum and maximum values of Z. The ranges of the x- and y-axis are [1:n] and [1:m], where [m,n] = size(Z). 不要颠倒了!故调用时:
i=1;
for a4=-a:delta:a
   k=1;
   for a5=-b:delta:b
           f(i,k)=int0(a4,a5);   %
给二维矩阵f赋值,调用int0函数
           k=k+1;
   end
   i=i+1;
end

a4=-a:delta:a;
a5=-b:delta:b;
meshgrid(a4,a5);    %meshgrid
产生(a4,a5)网格
[c,h]=contour3(a4,a5,f',[0,0]); %
f转置一下才能和meshgrid(a4,a5)相匹配!


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有