我有一个如下所示的数组(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
我想用相同的值替换同一行中的所有NaN(例如第3行),假设为0.5,这样输出如下所示:
第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:
data2winner(isnan(data2winner)) = 0.5
所以我想用
data2winner(isnan(data2winner(3,:))) = 0.5
会解决我的问题,但它不起作用。有人知道如何解决我的问题吗?任何帮助将不胜感激!
答案 0 :(得分:3)
isnan(data2winner(3,:))
为您提供1和0的逻辑数组,其中NaNs
在第三行中分别存在或不存在。然后,您需要索引到输入矩阵的第三行,并选择具有NaNs
(来自isnan
输出的那些)的列,并将它们设置为0.5
。你的错误是索引到完整矩阵而不是第三行。
因此,应该这样做 -
row_id = 3;
data2winner(row_id,isnan(data2winner(row_id,:))) = 0.5