我有一个矩阵由零和一个条目组成如下
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矩阵,其中零和一个条目在任何地方。
由于
答案 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