计算二维数组每行中非 NaN 值的数量
Count the number of non-NaN values in each row of a 2D array
我有一个这样的矩阵:
A = [1, 2, 3, 4, 5, NaN, NaN, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我想知道如何计算每行中不包括任何 NaN
的值的数量。
所以我会得到如下输出:
output = [5;
7;
10;]
如果A
是二维数组,例如
A = [1, 2, 3, 4, 5, NaN, NaN, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
并且您想计算 A
每行的 NaN
个条目的数量,您可以简单地使用
>> sum(~isnan(A), 2)
ans =
5
7
10
细分
isnan(A)
returns 一个与A
大小相同的逻辑数组,其中(logical1
表示一个NaN
和 0
一个非 NaN
.
请注意,您必须使用isnan
功能,在这里。特别是,表达式 A == ~NaN
是无用的:它只是 return 一个与 A
大小相同但充满(逻辑)0
的逻辑数组。为什么?因为,根据浮点运算,NaN == NaN
总是 return 为“假”(即逻辑 0
,在 MATLAB 中)。
然后,通过对其应用 MATLAB 的非运算符 (~
),您将获得与 A
大小相同的逻辑数组,其中 1
表示一个非NaN
和0
一个NaN
.
最后,sum(~isnan(A), 2)
returns一个列向量,其中第i个条目对应第i个逻辑1
的个数~isnan(A)
.
行
生成的列向量正是您想要的:A
.
中非 NaN
条目的逐行计数
我有一个这样的矩阵:
A = [1, 2, 3, 4, 5, NaN, NaN, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我想知道如何计算每行中不包括任何 NaN
的值的数量。
所以我会得到如下输出:
output = [5;
7;
10;]
如果A
是二维数组,例如
A = [1, 2, 3, 4, 5, NaN, NaN, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
并且您想计算 A
每行的 NaN
个条目的数量,您可以简单地使用
>> sum(~isnan(A), 2)
ans =
5
7
10
细分
isnan(A)
returns 一个与A
大小相同的逻辑数组,其中(logical1
表示一个NaN
和0
一个非NaN
.请注意,您必须使用
isnan
功能,在这里。特别是,表达式A == ~NaN
是无用的:它只是 return 一个与A
大小相同但充满(逻辑)0
的逻辑数组。为什么?因为,根据浮点运算,NaN == NaN
总是 return 为“假”(即逻辑0
,在 MATLAB 中)。然后,通过对其应用 MATLAB 的非运算符 (
~
),您将获得与A
大小相同的逻辑数组,其中1
表示一个非NaN
和0
一个NaN
.最后,
行sum(~isnan(A), 2)
returns一个列向量,其中第i个条目对应第i个逻辑1
的个数~isnan(A)
.
生成的列向量正是您想要的:A
.
NaN
条目的逐行计数