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

时间:2016-04-18 09:20:30

标签: matlab cell-array

我有一张照片;我在它上面运行一个循环并创建一个单元格数组。但是所有价值观的过程都非常缓慢。是否有可能加快这一过程?

还是以其他方式更快地完成此操作?

任何帮助都将不胜感激。

  [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

2 个答案:

答案 0 :(得分:1)

这比早期方法快得多。谢谢您的帮助。

    [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

答案 1 :(得分:0)

不是每次交互更新mycell的大小,而是事先创建单元格结构。那应该紧紧抓住它。

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

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

这会为您提供您想要找到的图像中的位置。也许你只需要把它放在一个for循环中它会更快。