如何在matlab中累积数字中的零条目

时间:2013-06-17 08:50:28

标签: matlab matrix

我有一个矩阵由零和一个条目组成如下

1 0 0 1
1 0 0 1
0 0 0 0

我需要用Numbers替换条目,如下所示

第一个零应该是1,第二个应该是2 ...第n个零是n

然后第一个应该是n + 1,第二个应该是n + 2 ...我要一个是n + i

导致以下矩阵

9  2  5  11
10 3  6  12
1  4  7  8

这适用于任何3xn矩阵,其中零和一个条目在任何地方。

由于

2 个答案:

答案 0 :(得分:1)

使用逻辑索引:

idx = ~A(:); %// Indices of zeros
A(idx) = 1:nnz(idx);
A(~idx) = nnz(idx) + 1:numel(A);

答案 1 :(得分:0)

以下是完成0部分所需的步骤。冲洗并重复以获得其他数字。 “结果”中的0是需要更新的位置。

>> a
a =
     1     0     0     1
     1     0     0     1
     0     0     0     0
>> ix = find(a==0);
>> result = zeros(size(a));
>> result(ix) = 1 : numel(ix)
result =
     0     2     5     0
     0     3     6     0
     1     4     7     8