Matlab中每n个值的中位数

Posted

技术标签:

【中文标题】Matlab中每n个值的中位数【英文标题】:Median for every nth values in Matlab 【发布时间】:2017-05-09 15:11:19 【问题描述】:

我对 Matlab 没有太多经验。 我有一个包含 17497 个元素的行向量,我想创建一个循环来获取每 120 个值的中位数。

因此,值的中位数为 1:120,然后是下一个值的中位数为 121:240,依此类推。

有人可以帮我吗?

提前致谢, 圣行

【问题讨论】:

【参考方案1】:

你可以使用accumarray

N = 17497;
data = rand(N,1);
%# array with 1,1,1,2,2,2 etc
idx = floor((0:N-1).'/120)+1;
%# create median for groups of 120 data points
%# discard the last one if needed as it's <120 points
out = accumarray(idx,data,[],@median);

【讨论】:

【参考方案2】:

我将假设您只需忽略行向量中的最后几个元素,这样行就可以平均分为 120 的部分。然后您可以将行向量转换为 120 行矩阵。 median可以直接对这个矩阵进行操作,返回每一列的中位数。

N = 17497;
A = randn(1,N);
newN = N - mod(N,120);
median(reshape(A(1:newN),120,[]));

【讨论】:

@S.Kupfer: rand 正在生成随机数,rand(2,3) 正在创建大小为 [2,3] 的随机数组。 @Jonas,谢谢!你的两个解决方案都帮了我很多,而且效果很好!

以上是关于Matlab中每n个值的中位数的主要内容,如果未能解决你的问题,请参考以下文章

在R中顺序计算列的中位数并将值存储在数据框中

计算循环中每列的中位数

在二叉搜索树中查找中位数的错误

MATLAB中保留小数点位数问题

R语言ggpubr包ggsummarystats函数可视化分组箱图(自定义分组颜色)并在X轴标签下方添加分组对应的统计值(样本数N中位数median四分位数的间距iqr统计值的色彩和分组图色匹配

1021. 个位数统计 (15)