用相同的值替换特定行中的所有 NaN - Matlab
Posted
技术标签:
【中文标题】用相同的值替换特定行中的所有 NaN - Matlab【英文标题】:Replace all NaN in specific row with same value - Matlab 【发布时间】:2015-01-18 16:41:08 【问题描述】:我有一个如下所示的数组 (data2winner):
第 1 至 6 列
1.0894 1.1923 1.0238 1.0625 1.0222 0.9701
1.0000 1.2419 1.2093 0.9412 0.9783 1.0923
1.0379 NaN 1.0000 1.0417 1.0667 1.0000
第 7 到 12 列
0.9661 0.9568 1.0400 0.8519 0.8675 0.9821
0.7895 1.0000 NaN 1.0000 1.1250 0.8182
1.0667 0.7714 NaN 1.0000 0.9383 1.1111
我想用相同的值(例如 0.5)替换同一行(例如第 3 行)中的所有 NaN,这样输出看起来像这样:
第 1 至 6 列
1.0894 1.1923 1.0238 1.0625 1.0222 0.9701
1.0000 1.2419 1.2093 0.9412 0.9783 1.0923
1.0379 **0.5** 1.0000 1.0417 1.0667 1.0000
第 7 到 12 列
0.9661 0.9568 1.0400 0.8519 0.8675 0.9821
0.7895 1.0000 NaN 1.0000 1.1250 0.8182
1.0667 0.7714 **0.5** 1.0000 0.9383 1.1111
我知道我可以使用以下方法将矩阵中的所有 NaN 替换为 0.5:
data2winner(isnan(data2winner)) = 0.5
所以我想用
data2winner(isnan(data2winner(3,:))) = 0.5
会解决我的问题,但它不起作用。有人知道如何解决我的问题吗?任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:isnan(data2winner(3,:))
为您提供一个由 1 和 0 组成的逻辑数组,其中 NaNs
分别出现在第三行中或不出现在第三行中。然后,您需要索引输入矩阵的第三行并选择具有NaNs
的列(来自isnan
输出的列)并将它们设置为0.5
。您的错误是索引到完整的矩阵而不是仅第三行。
因此,应该这样做 -
row_id = 3;
data2winner(row_id,isnan(data2winner(row_id,:))) = 0.5
【讨论】:
非常感谢!完美运行以上是关于用相同的值替换特定行中的所有 NaN - Matlab的主要内容,如果未能解决你的问题,请参考以下文章