如何在MATLAB中每12个星期取一次中值



我有以下数据帧:

x = randn(216,1)

如何获得每12个月/行的中位数?

我需要得到一个18x1的矢量。

有人能帮我吗?

使用For循环并按块大小递增,12

在每次迭代中一次抓取一个数组块。检索的数组的分区范围从值Median_Index到后面的11个索引

x = randn(216,1);
Median_Values = zeros(18,1);
Index = 1;
for Median_Index = 1: +12: 216
Chunk = x(Median_Index: Median_Index + 11);
Median_Values(Index) = median(Chunk,'all');
Index = Index + 1;
end

注意:all可以删除,因为我们正在处理向量(特别是因为它是1D(感谢@Luis Mendo的建议和兼容性提示。

使用MATLAB R2019b运行

您只需要将数据reshape作为一个12列矩阵,然后使用median和第二个参数来指定您希望它沿第一个维度操作,即计算每列的中值:

x = randn(216, 1); % example data
N = 12; % chunk size
result = median(reshape(x, N, []), 1);

相关内容

  • 没有找到相关文章

最新更新