マトリックス内のすべての NaN を、それぞれをループして isnan を使用して置き換えるというアイデアがありました。ただし、これによりコードの実行が必要以上に遅くなると思われます。誰かがより良い提案を提供できますか?
質問する
10711 次
3 に答える
25
あなたのマトリックスが次のようになっているとしましょう:
A =
NaN 1 6
3 5 NaN
4 NaN 2
次のように使用して、要素を見つけてNaN
ゼロに置き換えることができます。isnan
A(isnan(A)) = 0;
次に、出力は次のようになります。
A =
0 1 6
3 5 0
4 0 2
于 2013-01-21T13:25:05.440 に答える
5
x
が行列の場合、関数を使用してisnan
配列にインデックスを付けます。
x( isnan(x) ) = 0
2 つのステップで行うと、何が起こっているのかがより明確になるでしょう。最初に true/false 値の配列を作成し、次にこれを使用して選択した要素をゼロに設定します。
bad = isnan(x);
x(bad) = 0;
これはかなり基本的なものです。MATLAB のオンライン チュートリアルをいくつか読んで、理解を深めてください。
于 2013-01-21T13:24:36.720 に答える
4
関数isnan
はベクトル化されます。つまり、次のようになります。
>> A = [[1;2;NaN; 4; NaN; 8], [9;NaN;12; 14; -inf; 28 ]]
A =
1 9
2 NaN
NaN 12
4 14
NaN -Inf
8 28
>> A(isnan(A)) = 0
A =
1 9
2 0
0 12
4 14
0 -Inf
8 28
于 2013-01-21T13:25:08.983 に答える