在matlab中将输入添加到单元格数组中的多行

时间:2010-05-16 21:32:32

标签: arrays matlab

我想知道如何获取某些输入并将它们放在单元格数组中的多行中... 我基本上想要一个在ever循环中每行更新一个输入的数组。 循环循环30次,所以我希望有30行和2列(x和y列)

我有这段代码:

For N=1:30
    .
    .
    .
    Binary = bwlabel(blacknwhite);
    s = regionprops(Binary,'centroid');
    centroids = cat(1, s.Centroid);
    hold(imgca,'on')
    plot(imgca,centroids(1,1), centroids(1,2),'r*')
    .
    .
    .
    end

我不认为这样做我想要的......只有第一行在我的循环中更新.. 那么我该如何创建这个单元格数组呢?

如果您想了解更多信息,请告诉我,我会立即更新。

谢谢!

2 个答案:

答案 0 :(得分:1)

已经晚了,所以这不是一个完整的答案:

你想做什么?您是否尝试一次构建一个Nx2阵列?如果你是,那么你应该:

  1. 使用如下语句预先分配整个数组的空间:newArray = zeros(N,2)
  2. 在循环内部编写一个语句,例如newArray(N,:) = newValues,其中newValues是1x2数组。对我来说,你的代码片段没有使用数组索引N,这很奇怪。
  3. 您是否正在尝试构建单元阵列或数组?

答案 1 :(得分:1)

我假设您要存储质心。在这种情况下,您应该使用centroids(N,:)=cat...。另外,正如@High Performance Mark所说,你应该预先分配数组。

centroids = zeros(30,2); %# this assumes 1 centroid per image. 
For N=1:30
    .
    .
    .
    Binary = bwlabel(blacknwhite);
    s = regionprops(Binary,'centroid');
    centroids(N,:) = cat(1, s.Centroid);
    hold(imgca,'on')
    plot(imgca,centroids(N,1), centroids(N,2),'r*')
    .
    .
    .
end