matlab - 用以前的非零值替换零值

标签 matlab indexing vectorization

我需要在 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')

关于matlab - 用以前的非零值替换零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30729201/

相关文章:

matlab - 高斯消元法 Matlab 代码中的失败次数

python - 无需共享数据的快速/简单数组比较算法

python - .loc、.iloc 和已弃用的 .ix 的速度。为什么不使用.ix?

algorithm - 检测来自 YouTube 的重复视频

matlab - 使轴不可见或完全删除绘图

python - Numpy 索引到索引数组

python - 第一次和最后一次出现的逻辑表达式匹配之间的 Numpy 子集数组

python - 如何将非重叠数据帧矢量化为重叠移位数据帧?

c - 矢量化 - SSE、AVX 和 AVX2 的预期加速

r - pandas 中的向量化按列正则表达式匹配