【发布时间】:2014-10-02 04:54:51
【问题描述】:
我有一个填充了 0 和 1 的矩阵,我需要计算每行中 1 的数量。然后我需要知道哪一行的计数超过或等于特定限制(任何数字,例如 3)。在这些行中的 foreach 行之后,我需要创建一个向量,该向量保存该行中具有非零值的所有列的索引,并且在它上面和下面的所有行中,直到它到达一个计数为零的行。
示例: data 包含以下数据:
0 0 0 0 0 0 0
0 0 0 1 1 0 0
0 1 0 0 1 0 1
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 1 1 1 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 0 0
如果限制为 3,则输出应该是:
Row 3: col 4 5 2 5 7
Row 6: col 2 2 3 4 3
我已经读取了数据,并在下面的代码中数了数:
load('data');
mat(isnan(mat)) = 0;
[rows,cols,vals] = find(mat~= 0);
unqRows=unique(rows);
countElinRows=histc(rows,unqRows);
根据评论员的要求进行编辑以澄清:
如果给定样本输入数组的第三行变成[0 1 0 0 0 0 1],那么我们必须只有这个输出 -
Row 6: col 2 2 3 4 3
【问题讨论】:
-
是的,大卫,你说得对,抱歉打错了(已编辑)
-
如果输入数组的第三行是
[0 1 0 0 0 0 1],那么输出应该是什么? -
输出将是第 6 行,因为第 3 行没有 3 个
-
所以输出只是第 6 行,它的值与问题中所述的值相同 -
Row 6: col 2 2 3 4 3? -
是的,第 3 行中的示例 .. 它有三个 1,所以我们必须检查上面的行和上面的行,直到我们到达全为零的行(在这种情况下为第 1 行)并从第 2 行检查有任何列的列并将其放入我们的向量中.. 然后第 3 行然后第 4 行直到我们到达没有任何列的行。