用之前的非零值替换零值

use*_*630 2 indexing matlab vectorization

我需要一个快速的方法在Matlab中做这样的事情(我正在处理大量的向量,所以一个正常的循环需要永远!):

从像矢量

[0 0 2 3 0 0 0 5 0 0 7 0]
Run Code Online (Sandbox Code Playgroud)

我需要得到这个:

[NaN NaN 2 3 3 3 3 5 5 5 7 7]
Run Code Online (Sandbox Code Playgroud)

基本上,每个零值被替换为先前非零值的值.第一个是NaN因为向量中没有先前的非零元素.

Dan*_*Dan 5

试试这个,虽然不确定速度.必须运行,所以如果你需要,解释必须在以后进行:

interp1(1:nnz(A), A(A ~= 0), cumsum(A ~= 0), 'NearestNeighbor')
Run Code Online (Sandbox Code Playgroud)