在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
,因为向量中没有以前的非零元素.
发布于 2015-06-09 02:41:12
试试这个,但不确定速度。如果你需要的话,你得赶紧解释一下:
interp1(1:nnz(A), A(A ~= 0), cumsum(A ~= 0), 'NearestNeighbor')
发布于 2015-06-09 02:43:03
试试这个(它使用cummax
函数,在R2014b中引入):
i1 = x==0;
i2 = cummax((1:numel(x)).*~i1);
x(i1&i2) = x(i2(i3));
x(~i2) = NaN;
https://stackoverflow.com/questions/30729201
复制