我想通过循环遍历每个NaN并使用isnan来替换矩阵中的所有NaN.但是,我怀疑这会使我的代码运行速度比应该的慢.有人可以提供更好的建议吗?
Heb*_*odo 24
假设你的矩阵是:
A =
NaN 1 6
3 5 NaN
4 NaN 2
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法找到NaN元素并将其替换为零isnan:
A(isnan(A)) = 0;
Run Code Online (Sandbox Code Playgroud)
然后你的输出将是:
A =
0 1 6
3 5 0
4 0 2
Run Code Online (Sandbox Code Playgroud)
如果x是你的矩阵,那么使用isnan函数索引数组:
x( isnan(x) ) = 0
Run Code Online (Sandbox Code Playgroud)
如果你分两步完成,可能会更清楚地看到发生了什么.首先创建一个true/false值数组,然后使用它将所选元素设置为零.
bad = isnan(x);
x(bad) = 0;
Run Code Online (Sandbox Code Playgroud)
这是非常基本的东西.您最好阅读一些关于MATLAB的在线教程以加快速度.