如果条件匹配MATLAB

时间:2017-11-09 12:01:43

标签: matlab matrix

我有一个大小为13472x30974的矩阵A。在第一行中,始终存在一个值(从1到30974)。如果特定列中的所有其他值都是NaN,我想删除列。

我可以删除列,如果我将第一行与矩阵的其余部分分开,但我将无法将两个矩阵合并(因为它们的大小不同)。

B = A(:, ~all(isnan(A)));

我想使用any代替all不会返回所需的输出,因为有些列可能包含NaN和实际值的值。

那么如何从2:13472处理矩阵的部分,然后从1:13472删除?

1 个答案:

答案 0 :(得分:2)

您可以在isnan

上使用2:end
B = A( :, ~all(isnan(A(2:end, :))) )
  • 在排除第一行的isnan上运行A - A(2:end, :)
  • 输出A - A(:, ___ )
  • 的所有行

如果您只想删除匹配的列,而不是分配给B,请使用

A( :, all(isnan(A(2:end, :))) ) = [];