根据条件计算列的平均值

时间:2018-07-02 14:06:46

标签: matlab

所以我的问题如下:我有一个矩阵(让我们来做

A = [ 1 11 22 33; 44 13 12 33; 1 14 33 44,]

作为示例),我想分别计算所有列的平均值。棘手的部分是,我只想计算每列中大于列25个百分点的那些数字的平均值。

我当时想简单地创建第25个百分位数,然后将其用作选择行的标准。不幸的是,这是行不通的。

为了进一步阐明:应该发生的是遍历每一列并计算第25个百分位数

prctile(A,25,1)

然后仅计算分别在其列中大于百分位数的那些数字的平均值。

有帮助吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

您可以创建A的版本,该版本为NaN,表示低于25%的值,然后使用'omitnan'中的mean标志排除这些点:

A = [1 11 22 33; 44 13 12 33; 1 14 33 44];
B = A; % copy to leave A unaltered
B( B <= prctile(B,25,1) ) = NaN; % Turn values to NaN which we want to exclude
C = mean( B, 1, 'omitnan' ); % Omit the NaN values from the caculation
% C >>
%  [ 15.33 13.50 27.50 36.67 ]
相关问题