【问题标题】:Choosing isolines from Matlab contour function从 Matlab 轮廓函数中选择等值线
【发布时间】:2013-03-08 19:18:33
【问题描述】:

Matlab 等高线函数(和 imcontour)绘制矩阵不同级别的等值线。 我想知道:如何操作此函数的输出以接收每个轮廓的所有 (x,y) 坐标以及级别? 如何使用输出 [C,h] = contour(...) 来完成上述任务?另外,我对操作底层网格不感兴趣,它是一个连续函数,只提取我在绘图上看到的相关像素

【问题讨论】:

  • “难以使用”和“不直截了当”不会取消解决方案的资格。放手去做。如果您有问题,请根据您实际遇到的问题重新提出问题。

标签: matlab coordinates contour


【解决方案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')

这将给出这个情节:

【讨论】:

  • 很好的答案,例子和情节让一切都非常清楚(-:
  • 这一行有一个错字:z = exp(-x.^2 -y,^2); 您可能想在这里用. 替换,。除此之外,我不知道 #% 在 4 年前看起来如何,但现在 % 后面的文字显示为灰色,看起来不错,或者可能只是我! ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 2014-04-15
  • 1970-01-01
  • 2016-06-29
  • 2013-06-19
  • 1970-01-01
相关资源
最近更新 更多