首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用以前的非零值替换零值。

用以前的非零值替换零值。
EN

Stack Overflow用户
提问于 2015-06-09 10:16:07
回答 4查看 770关注 0票数 2

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

从类似于向量的

代码语言:javascript
代码运行次数:0
运行
复制
[0 0 2 3 0 0 0 5 0 0 7 0]

我要去拿这个

代码语言:javascript
代码运行次数:0
运行
复制
[NaN NaN 2 3 3 3 3 5 5 5 7 7]

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-09 10:41:12

试试这个,但不确定速度。如果你需要的话,你得赶紧解释一下:

代码语言:javascript
代码运行次数:0
运行
复制
interp1(1:nnz(A), A(A ~= 0), cumsum(A ~= 0), 'NearestNeighbor')
票数 5
EN

Stack Overflow用户

发布于 2015-06-09 10:43:03

试试这个(它使用cummax函数,在R2014b中引入):

代码语言:javascript
代码运行次数:0
运行
复制
i1 = x==0;
i2 = cummax((1:numel(x)).*~i1);
x(i1&i2) = x(i2(i3));
x(~i2) = NaN;
票数 2
EN

Stack Overflow用户

发布于 2015-06-09 12:00:33

仅供参考,以下是来自exchange central和/or列的一些类似/相同的函数。

近点

尝试knnimpute函数。

或者说,最重要的是,一个为完成您的任务而设计的函数:

雷普南 (显然,首先用NaN替换零值)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30729201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档