2

我有一个由零和一个条目组成的矩阵,如下所示

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

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

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

那么第一个应该是n+1,第二个应该是n+2...第i个应该是n+i

产生以下矩阵

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

这应该适用于任何位置为零和一个条目的任何 3xn 矩阵。

谢谢

4

2 回答 2

1

使用逻辑索引:

idx = ~A(:); %// Indices of zeros
A(idx) = 1:nnz(idx);
A(~idx) = nnz(idx) + 1:numel(A);
于 2013-08-28T16:08:45.910 回答
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
于 2013-08-28T16:08:15.163 回答