【问题标题】:summation of level values from contour plot等高线图中水平值的总和
【发布时间】:2018-05-04 10:37:55
【问题描述】:

我正在尝试计算轮廓内的水平(z 轴)值的总和:

我已经设法获得了轮廓的线(或边缘),所以我有每条线的限制:

我想要的是对第二个图中外蓝线内的轮廓 z 轴上的所有级别求和,以将其与蓝线外的值的总和进行比较。有没有办法做到这一点?我到目前为止的代码是:

   C = contourc(f, t, abs(tfr));

%extracts info from contour    
    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

【问题讨论】:

  • 轮廓的总和是什么意思?如果线条在 1,2 和 3 中,你想要 6?或者你想考虑这个地区?还是轮廓本身的长度?我问,因为您可能会尝试做所有可能的事情,我很确定有一个更简单的解决方案。您需要先解释一下才能从中选择
  • 我的意思是,对于第 1 行(第二张图像的轮廓的外部部分),我想要“以周长为单位”的每个值的总和。轮廓显示了一座“山”,我想将构成这座山的值的总和与底层进行比较。
  • 我不明白。如果是等高线,则周长中的所有值都相同,因为它是等高线的定义,即域中所有值都相同的线。
  • 我是否认为您想要所有元素的总和 inside 等高线(不在等高线上)?这就是我下面的答案。
  • 没错,EdR,这正是我想做的!非常感谢!

标签: matlab plot contour


【解决方案1】:

因此,在您运行问题中的代码后,您将获得数组S 中每个轮廓的坐标。假设您有 ft 形式的变量 f = 94:0.1:101t = 0:1000 或类似变量,并且您想要求和的值是 abs(tfr),您应该可以使用

[fg, tg] = meshgrid(f,t)
is_inside = inpolygon(fg,tg, S(1).x, S(1).y)
integral = sum(abs(tfr(is_inside))

S 中的其他条目也是如此。有关更多示例,请参阅inpolygon 的帮助。曲线外的点可以使用~is_inside

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多