所以我的问题如下:我有一个矩阵(让我们来做
A = [ 1 11 22 33; 44 13 12 33; 1 14 33 44,]
作为示例),我想分别计算所有列的平均值。棘手的部分是,我只想计算每列中大于列25个百分点的那些数字的平均值。
我当时想简单地创建第25个百分位数,然后将其用作选择行的标准。不幸的是,这是行不通的。
为了进一步阐明:应该发生的是遍历每一列并计算第25个百分位数
prctile(A,25,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 ]