Fasters实现的任何其他方法-matlab单元阵列



我有一个图像;我在上面运行一个循环并创建一个单元数组。但所有价值观的过程都非常缓慢。有什么办法可以加快这个过程吗?

或者有其他更快的方法吗?

如有任何帮助,我们将不胜感激。

  [a,b] = size(depth);
  for i=1:a   % a = 1024
   for j=1:b  %b = 1360
    if isfinite(depth(i,j))
                segId = (label(i,j));
                if (segId > 0)
                  mycell{1,idx,segId} = {i,j,depth(i,j)};
                  idx=idx+1;       
                end 
             end
           end
         end

这比以前的方法快得多。谢谢你的帮助。

    [row,col] = find(~(isnan(depth)));
    len = length(row);
    for i= 1:len            
       segId = (label(row(i),col(i)));
       if (segId > 0)
            mycell{1,idx,segId} = {row(i),col(i),depth(row(i),col(i))};
            idx=idx+1;
       end
    end

与其每次相互作用都更新mycell的大小,不如事先创建细胞结构。这应该会使它稍微紧固一点。

然而,您正在评估图像的所有点。为什么不做一些数学运算呢?

[rol,col]=find(depth(depth>0))-我快速扫描你的代码,我想你正在寻找这个值。

这给了你想要在你的图像中找到的位置。也许你只需要把它放在一个for循环上,它会更快。

最新更新