从Matlab等值线函数中选择等值线
Matlab轮廓函数(和imcontour)绘制矩阵不同级别的等值线。 我想知道:如何操作此函数的输出,以便接收每个轮廓的所有(x,y)坐标以及标高?从Matlab等值线函数中选择等值线,matlab,coordinates,contour,Matlab,Coordinates,Contour,Matlab轮廓函数(和imcontour)绘制矩阵不同级别的等值线。 我想知道:如何操作此函数的输出,以便接收每个轮廓的所有(x,y)坐标以及标高? 如何使用输出[C,h]=轮廓(…)来完成上述任务?另外,我对操作底层网格不感兴趣,它是一个连续函数,只提取我在绘图上看到的相关像素 您可以使用此功能。它接受轮廓函数的输出,并返回一个结构数组作为输出。数组中的每个结构表示一条等高线。结构具有字段 v,等高线的值 x,等高线上点的x坐标 y,等高线上点的y坐标 函数s=getcontourline
如何使用输出[C,h]=轮廓(…)来完成上述任务?另外,我对操作底层网格不感兴趣,它是一个连续函数,只提取我在绘图上看到的相关像素 您可以使用此功能。它接受
轮廓
函数的输出,并返回一个结构数组作为输出。数组中的每个结构表示一条等高线。结构具有字段
,等高线的值v
,等高线上点的x坐标x
,等高线上点的y坐标 函数s=getcontourlines(c) 这将给出这个图:y
“难以处理”和“不直接”并不意味着解决方案不合格。随它去吧。如果您有问题,请用您实际遇到的问题重新提问。回答很好,示例和绘图使一切都非常清楚(-:这一行有一个拼写错误:
你可能想在这里用z=exp(-x.^2-y,^2)
替换
。除此之外,我不知道,
和
在4年前是怎么看的,但现在%
后面的文本以灰色显示,看起来不错,或者可能只是我!!%
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')