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)
我想用预定义的值替换每个NaN
in 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)
归档时间: |
|
查看次数: |
302 次 |
最近记录: |