MATLAB对于类型为';的输入参数,未定义函数isnan;数据集';

MATLAB对于类型为';的输入参数,未定义函数isnan;数据集';,matlab,dataset,nan,Matlab,Dataset,Nan,我有一个数据集有点大(48000*53),我试图找到它的多元异常值。 但是,每次尝试trimmean()等函数时,杠杆()都会出现相同的错误。 我的数据集应该没有NaN值,但我仍然尝试运行代码D(find(sum(isnan(D),2)=0),:)和D(任意(isnan(D),2),:)=[]但我得到了相同的错误….以下示例从数据集中删除所有包含NaN元素的行 该示例基于以下帖子: 将数据集转换为单元格数组 查找单元格数组中NaN元素的所有索引 查找包含NaN元素的行的索引 在单元格数组中仅保

我有一个数据集有点大(48000*53),我试图找到它的多元异常值。 但是,每次尝试trimmean()等函数时,杠杆()都会出现相同的错误。
我的数据集应该没有NaN值,但我仍然尝试运行代码
D(find(sum(isnan(D),2)=0),:)
D(任意(isnan(D),2),:)=[]但我得到了相同的错误….

以下示例从数据集中删除所有包含NaN元素的行

该示例基于以下帖子:

  • 将数据集转换为单元格数组
  • 查找单元格数组中NaN元素的所有索引
  • 查找包含NaN元素的行的索引
  • 在单元格数组中仅保留没有NaN元素的行
  • 将单元格数组转换回数据集
检查以下代码示例:

%Create dataset for the example.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
VarName1 = [4; NaN; 6; 7; 6; 6; 6; 5; 5; 6; 6];
VarName2 = [2; 2; 2; 3; 3; 2; NaN; 2; 2; NaN; 3];
VarName3 = {'aa'; 'aa'; 'aa'; 'bbb'; 'bbb'; 'ccc'; 'ccc'; 'ccc'; 'ccc'; 'dddd'; 'dddd'};
D = dataset(VarName1, VarName2, VarName3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Convert dataset to cell array.
C = dataset2cell(D);

%Find all indexes of NaN elements (use anonymous function).
nanIdx = cellfun(@(x)(any(isnan(x))), C);

%Find indexes of rows with NaN elements
nanRows = any(nanIdx,2);

%Keep only rows without NaN elements.
C = C(~nanRows, :);

D = cell2dataset(C);