早上好/下午〜
我有一个像这样的数组,
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中的非零元素?
答案 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);