我需要在Matlab中快速执行此操作(我正在处理巨大的向量,所以正常的循环永远需要!):
从像
[0 0 2 3 0 0 0 5 0 0 7 0]
我需要得到这个:
[NaN NaN 2 3 3 3 3 5 5 5 7 7]
基本上,每个零值都将替换为先前的非零值。第一个是
NaN
,因为没有先前的非零元素在向量中。
最佳答案
试试这个,虽然不确定速度。可以运行,因此如果需要,稍后将需要进行解释:
interp1(1:nnz(A), A(A ~= 0), cumsum(A ~= 0), 'NearestNeighbor')