Joe*_*Joe -3 matlab matrix nan
我有矩阵A如:
A = [1 2 3 NaN;
1 NaN 2 NaN;
NaN 2 3 4]
Run Code Online (Sandbox Code Playgroud)
我想用预定义的值替换每个NaNin A,例如我的列vector B:
B = [2; 1.5; 3]
Run Code Online (Sandbox Code Playgroud)
因此,对于第二行,我想获得一个新矩阵,其中此特定行中的每个NaN都被替换为1.5.它将2在第一行和3第三行.
除了循环整个矩阵之外,还有更好的方法吗?我用了一个for与循环if和else条件.但是,此解决方案执行速度不是很快.
这是一个使用的解决方案repelem(在R2015a中引入).诀窍是B根据NaN每行中出现的次数重复输入A.
req = A.';
req(isnan(req)) = repelem(B, sum(isnan(req)));
req = req.';
Run Code Online (Sandbox Code Playgroud)
如果你也想计算B,使用mean与'omitnan'标志(在R2015a介绍),即
B = mean(A,2,'omitnan');
Run Code Online (Sandbox Code Playgroud)