将序列号分配给数组中的整数元素

时间:2013-04-16 16:51:32

标签: arrays matlab replace sequential

早上好/下午〜

我有一个像这样的数组,

A= [12 0 0 0 0 3 0 0 0 66 0 0 0 0 20 0 0 2 0 31 0 0  42 0 32 0 38]

输出应为:

B= [ 1 0 0 0 0 2 0 0 0 3  0 0 0 0  4 0 0 5 0  6 0 0  7  0 8  0 9]

如何用序号替换A中的非零元素?

4 个答案:

答案 0 :(得分:5)

这样做:

A(A ~= 0) = 1:nnz(A)

答案 1 :(得分:0)

A(ismember(A,A(A(:) ~=0))) = 1:numel(A(A(:) ~=0))

答案 2 :(得分:0)

使用图像处理工具箱(但会为相邻的非零值提供相同的标签):

B = bwlabel(A)

答案 3 :(得分:0)

B = cumsum(A ~= 0) .* (A ~= 0);