【问题标题】:Add inputs to more than one row in a cell array in matlab在matlab中将输入添加到单元格数组中的多行
【发布时间】:2010-05-16 21:32:31
【问题描述】:

我想知道如何获得某些输入并将它们放在单元格数组中的多行中... 我基本上想要一个在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

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

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

谢谢!

【问题讨论】:

    标签: arrays matlab


    【解决方案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
    

    【讨论】:

    • 是的,谢谢你,我还在测试它,因为最终代码还没有工作。
    【解决方案2】:

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

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

    1. 为整个数组预先分配空间,使用如下语句:newArray = zeros(N,2)
    2. 在您的循环中编写一个语句,例如 newArray(N,:) = newValues,其中 newValues 是一个 1x2 数组。对我来说很奇怪的是,您的代码 sn-p 没有使用数组索引 N

    您是要构建元胞数组还是数组?

    【讨论】:

    • 我不确定它是单元格数组还是数组.. 基本上看起来像 excel。在循环结束时,我只得到 1 行和 2 列的数据......我希望得到 23 来正确地进行 polyfit。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2023-03-03
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多