【问题标题】:Replace zeros with following nonzero value in MATLAB在 MATLAB 中用以下非零值替换零
【发布时间】:2017-12-04 18:02:02
【问题描述】:

我有一个向量A,其中包含zeros 的值。我现在想用以下非零值替换所有zeros。我发现这个 solution by @Luis Mendo 用以前的非零值替换零。

A = [1 0 2 0 7 7 7 0 5 0 0 0 9];
t = cumsum(A~=0);
u = nonzeros(A);
B = u(t).';

是否有类似的方法也可以将zeros 替换为最接近的以下非零值?

【问题讨论】:

    标签: matlab replace zero


    【解决方案1】:

    只需将代码应用到A的翻转版本,然后翻转结果:

    A = [1 0 2 0 7 7 7 0 5 0 0 0 9];
    t = cumsum(flip(A)~=0);
    u = nonzeros(flip(A));
    B = flip(u(t).');
    

    或者,如 @craigim 所述,在最近的 Matlab 版本中,您可以在 cumsum 中使用 'reverse' 标志:

    A = [1 0 2 0 7 7 7 0 5 0 0 0 9];
    t = cumsum(A ~= 0, 'reverse');
    u = nonzeros(flip(A));
    B = u(t).';
    

    【讨论】:

    • 如果你的 MATLAB 版本够新,你也可以t = cumsum(A ~= 0, 'reverse');
    • @craigim 好主意!已编辑
    猜你喜欢
    • 2015-08-24
    • 2016-01-20
    • 2020-04-05
    • 2018-01-05
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    相关资源
    最近更新 更多