可以使用isnan函数来判断一个元素是否为NaN,然后使用逻辑索引来删除符合条件的列。具体方法如下:

假设有一个矩阵A,需要删除第二列中含有NaN的项,可以使用以下代码:

A(:, any(isnan(A), 1)) = []

解释一下这个代码:

  • isnan(A) 返回一个和A大小相同的逻辑矩阵,其中每个元素为0或1,表示对应的元素是否为NaN。
  • any(isnan(A), 1) 对逻辑矩阵进行逐列求和,返回一个行向量,其中第i个元素为1表示第i列中至少有一个元素为NaN。
  • A(:, any(isnan(A), 1)) 选取所有行,但是只选取含有NaN的列。
  • A(:, any(isnan(A), 1)) = [] 将选取的列赋值为空,即删除这些列。

注意:

  • any 函数中的第二个参数 1 表示对列进行求和,如果要对行进行求和,应该使用 2
  • 如果需要删除含有NaN的行,可以将 1 改为 2,然后去掉第一个冒号即可,即 A(any(isnan(A), 2), :) = []
matlab 删除一列数据中含有NaN的项

原文地址: https://www.cveoy.top/t/topic/ckRu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录