首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到跨越边的最大距离- Matlab

找到跨越边的最大距离- Matlab
EN

Stack Overflow用户
提问于 2013-10-02 00:16:56
回答 2查看 174关注 0票数 0

我很确定标题还不够清楚。我试着解释:

我有很多的曲面,我不得不比较另一个(固定的)。曲面由10x18xN矩阵定义,即曲面数N。

我想比较的是,如果任何N个曲面的任何一点超过了固定曲面,并计算出它超过的距离。

我在逐点比较,就像这样:

代码语言:javascript
复制
  for j = 1 : N
     for i = 1 : 10
        for k = 1 : 18
            if surface(i,k,j) > surface_fixed(i,k)
                 dist = surface(i,k,j) - surface_fixed(i,k)
            end
        end
     end
   end

但我想知道是否有可能计算这个“区域”(距离)而不是点对点,因为它花了我太多的时间!

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 01:04:14

好的,让我们假设以下几点:

“‘Surface”是一个变量,它是深度图(正如您前面所说的Z分量)。“Surface_fixed”就是你所比较的。'Surface_fixed‘是10×18×N矩阵,’Surface_fixed‘是10×18。

尝试以下方法,如果这是您所需要的,请告诉我:

代码语言:javascript
复制
    Dist_measures = zeros(10,18,N);
    for i = 1:N
        Dist_measures(:,:,i) = Surface(:,:,i) - Surface_fixed;
    end

Dist_measures将保持高度上的差异。给出一个阈值,这样你就可以得到与固定曲面不同的每个指数的x,y位置。

X,y= find(abs(Dist_measures(i)) > Thres)

在这里,您可以遍历i,得到特定曲面的任意位置的x,y坐标。

票数 1
EN

Stack Overflow用户

发布于 2013-10-02 00:33:25

“但我想知道是否有可能计算这个”距离“(距离)而不逐点计算,因为它花了我太多的时间!”

那么你很可能会想要把这个矢量化。根据您的构造,它独立于j,所以如下所示:

dist =面(:,:,1) - surface_fixed;

然而,我觉得需要更多的细节,因为你的索引可能是不正确的。你可以尝试这样的方法:

dist =表面重塑(surface_fixed,size(表面,1),size(表面))

但是没有更多关于你正在做的事情的细节,我有相当高的可信度,那不是你想要的(而且可能不必要地创建大数组)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19128077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档