如果有人能帮助我解决这个问题,我将不胜感激......
我有一个向量
A = [NaN 1 1 1 1 NaN NaN NaN NaN NaN 2 2 2 NaN NaN NaN 2 NaN NaN 3 NaN NaN];
我想根据这个逻辑填充 NaN 值。
1) 如果 NaN 序列前面的值与序列后面的值不同 => 将 NaN 的一半分配给第一个值,一半分配给第二个值
2) 如果 NaN 序列位于 2 个相等的值之间 => 用该值填充 NaN。
那么A应该是:
A = [1 1 1 1 1 1 1 (1) 2 2 2 2 2 2 2 2 2 2 3 3 3]
我在小括号内放了一个 1,因为我将该值分配给了前半部分......NaN 的序列是奇数。
我在手机中输入此内容,没有使用 MATLAB - 因此可能会出现一些问题。但这应该很接近:
t = 1:numel(A);
Anew = interp1(t(~isnan(A)),A(~isnan(A)),t,'nearest','extrap');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)