我有一个由零和一个条目组成的矩阵,如下所示
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 矩阵。
谢谢
使用逻辑索引:
idx = ~A(:); %// Indices of zeros
A(idx) = 1:nnz(idx);
A(~idx) = nnz(idx) + 1:numel(A);
以下是您需要采取的步骤,以完成 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