Matlab 等高线函数(和 imcontour)绘制矩阵不同级别的等值线。我想知道:如何操作此函数的输出以接收每个轮廓的所有 (x,y) 坐标以及级别?如何使用输出 [C,h] = contour(...) 来完成上述任务?另外,我对操作底层网格不感兴趣,它是一个连续函数,只提取我在绘图上看到的相关像素。
问问题
9461 次
1 回答
5
您可以使用此功能。它接受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')
这将给出这个情节:
于 2013-03-08T19:36:29.153 回答