【问题标题】:Find top surface of solid object in Matlab在Matlab中找到固体物体的顶面
【发布时间】:2018-10-15 21:39:56
【问题描述】:

我在名为mask (1000x1000x1000 uint16) 的 Matlab 3D 数组中对实体对象进行了二进制分割。我需要提取顶面,即每个列向量的第一个非零元素(在第二维和第三维上)。我可以用下面的代码 sn-p 做到这一点:

s = zeros(1000,1000); 
for y=1:1000
    for x=1:1000
        s(x,y) = find(mask(:,x,y),1);
    end 
end

有没有办法向量化代码并避免for 循环?

【问题讨论】:

    标签: matlab vectorization


    【解决方案1】:

    查找maximum 值的索引(在您的情况下为一个)。 Squeeze 这些索引用于删除单一维度并转换为所需的形式 (s)。

    [~, ind] = max(mask); 
    s = squeeze(ind);
    

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 1970-01-01
      • 2022-01-14
      • 2021-04-10
      • 2015-02-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      相关资源
      最近更新 更多