从MATLAB轮廓功能选择等值线(Choosing isolines from Matlab con

2019-07-21 05:24发布

Matlab的轮廓函数(和imcontour)绘制不同级别的矩阵的等值线。 我想知道:我怎样才能处理此函数的输出,以接收所有的(X,Y)坐标每个轮廓的,同级别一起? 如何使用输出[C,H] =轮廓(...)来实现上述任务? 另外,我不感兴趣,操纵底层的网格,这是一个连续函数, 只提取相关像素,我在图上看到

Answer 1:

您可以使用此功能。 它采用的输出contour功能,并返回一个结构阵列作为输出。 阵列中的每个结构代表一个的轮廓线。 该结构有场

  • v ,轮廓线的值
  • x中,x的点的轮廓线上的坐标
  • y ,这些点上的轮廓线的Y坐标

    函数s = getcontourlines(c)中

     sz = size(c,2); % Size of the contour matrix c ii = 1; % Index to keep track of current location jj = 1; % Counter to keep track of # of contour lines while ii < sz % While we haven't exhausted the array n = c(2,ii); % How many points in this contour? s(jj).v = c(1,ii); % Value of the contour s(jj).x = c(1,ii+1:ii+n); % X coordinates s(jj).y = c(2,ii+1:ii+n); % Y coordinates ii = ii + n + 1; % Skip ahead to next contour line jj = jj + 1; % Increment number of contours end 

    结束

您可以使用它像这样:

>> [x,y] = ndgrid(linspace(-3,3,10));
>> z = exp(-x.^2 -y.^2);
>> c = contour(z);
>> s = getcontourlines(c);
>> plot(s(1).x, s(1).y, 'b', s(4).x, s(4).y, 'r', s(9).x, s(9).y, 'g')

这将给这个阴谋:



文章来源: Choosing isolines from Matlab contour function