我对Matlab没有多少经验。 我有一个17497元素的行向量,我想创建一个循环来获得每120个值的中位数。
因此,值1:120的中位数,然后是121:240的下一个中值,依此类推。
有人能帮助我吗?
提前致谢, 圣行
答案 0 :(得分: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);
答案 1 :(得分:0)
我将假设您只是忽略行向量中的最后几个元素,以便可以将行等分为120个部分。然后,您可以将行向量转换为120行矩阵。 median
可以直接对此矩阵进行操作,并返回每列的中位数。
N = 17497;
A = randn(1,N);
newN = N - mod(N,120);
median(reshape(A(1:newN),120,[]));