我有以下数据帧:
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);