Matlab如何计算同时包含数值和非数值数据的表格每行平均值
Matlab混合类型表格行平均值计算方案
你给出的表格所有单元格均为字符型内容,其中混有数值字符串、空字符串、无意义字符,实现排除非数值项计算行平均的逻辑非常简单,无需额外写复杂的校验规则:
核心实现代码
假设你已经将表格读入Matlab,存储为table类型变量T,代码如下:
% 可选:如果表格原本混有数值列和字符列,先统一转成字符串类型 % T = varfun(@string, T); row_avg = zeros(height(T), 1); for row_idx = 1:height(T) % 提取当前行所有内容,尝试转为数值,非数值自动转为NaN num_list = str2double(T{row_idx, :}); % 计算平均值时自动忽略NaN值 row_avg(row_idx) = mean(num_list, 'omitnan'); end % 可选:将计算得到的行平均值追加到原表格末尾,方便后续查看导出 T.row_average = row_avg;
效果验证
以你给出的第二行数据为例:'0.000' '0.000' 'xxxxx' '82.778',经过str2double转换后得到数值序列[0, 0, NaN, 82.778],忽略NaN计算平均值为(0+0+82.778)/3 = 27.5927,符合需求。
如果某行所有内容均为非数值,计算结果会返回NaN,可根据需求后续自行过滤这类结果。
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

