使用Matlab进行平均,同时排除NaN和其他特定值

我有一个Excel电子表格,其中包含的值表示实验设置中的不同variables。 例如,我的数据中的一列可能被称为“反应时间”,因此包含代表时间的值(以毫秒为单位)。 如果在试验过程中出现问题,并且没有logging反应时间的值,那么Matlab就会调用这个“NaN”。 我知道我可以使用:

data = xlsread('filename.xlsx') reaction_time = data(:,3) average_reaction_time = mean(reaction_time, 'omitnan') 

这将返回我的电子表格(第3列)“反应时间”列中列出的平均值。 它跳过所有不是数字的东西(NaN,在实验过程中出现错误的情况下)。

以下是我需要帮助的内容:

除了排除NaN之外,我还需要能够忽略一些值。 例如,一种types的错误导致打印“1毫秒”反应时间,并且因此将其打印在电子表格中。 我如何指定我需要忽略NaN,“1”和其他值?

在此先感谢米奇

一个选项可能是尝试使用standardizeMissing函数在使用mean'omitnan'之前,用NaNreplace要排除的值。 例如:

 >> x = 1:10; >> x = standardizeMissing(x, [3 4 5]); % Treat 3, 4, and 5 as missing values x = 1 2 NaN NaN NaN 6 7 8 9 10 >> y = mean(x, 'omitnan'); 

如果您将Excel工作表读取到表中,那么如果您使用DataVariables名称 – 值对,则standardizeMissing只能在您关心的列中用NaNreplace值。