【问题标题】:Delete columns if condition is matched in all but one cell in MATLAB如果 MATLAB 中除一个单元格之外的所有单元格都匹配条件,则删除列
【发布时间】:2017-11-09 20:04:50
【问题描述】:

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

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

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

我猜想使用any 而不是all 也不会返回所需的输出,因为某些列可能包含带有NaN 的值和实际值。

那么我怎样才能从2:13472 中处理矩阵的一部分,但又从1:13472 中删除呢?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    您可以在2:end 行上使用isnan

    B = A( :, ~all(isnan(A(2:end, :))) )
    
    • A 上运行isnan,不包括第一行 - A(2:end, :)
    • 输出A - A(:, ___ ) 的所有行

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-24
      • 2022-11-24
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多