matlab 删除一列数据中含有NaN的项
可以使用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), :) = []。
原文地址: https://www.cveoy.top/t/topic/ckRu 著作权归作者所有。请勿转载和采集!