是否有任何通用的方法从矩阵中删除NaNs?有时我会在某些代码中遇到这个问题,然后它会产生问题以获得适当的输出.是否有任何方法可以生成任何类型的检查以避免在MATLAB代码中出现NaN?如果有人能够给我一个与之相关的一些想法,那将会非常有帮助.
您可以使用以下isnan函数检测nan值:
A = [1 NaN 3];
A(~isnan(A))
1 3
Run Code Online (Sandbox Code Playgroud)
这实际上消除了nan值,但是这并不总是可行的,例如
A = [1 nan; 2 3];
A(~isnan(A))
1
2
3
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这会破坏矩阵结构.您可以通过首先预先分配并从而将nan值设置为零来避免这种情况:
B = zeros(size(A));
B(~isnan(A))=A(~isnan(A))
B =
1 0
2 3
Run Code Online (Sandbox Code Playgroud)
或者,覆盖我们原来的矩阵 A
A(isnan(A))=0
A =
1 0
2 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |