2017-05-09 4 views
0

Matlab에 대한 많은 경험이 없습니다. 17497 개의 요소가있는 행 벡터가 있으며 매 120 개의 값의 중앙값을 얻기 위해 루프를 만들고 싶습니다.Matlab의 모든 n 번째 값에 대한 중앙값

따라서 값 1의 중앙값은 120이고 값의 다음 중간 값은 121 : 240입니다.

누군가 나를 도울 수 있습니까? 사전에

감사합니다, 손나

난 당신이 단순히 행이 동등하게 당신은 다음 행을 변환 할 수 있습니다 (120)의 부분으로 구분 될 수 있도록 여러분의 행 벡터의 마지막 몇 가지 요소를 무시한다고 가정하기 위하여려고하고있다

답변

0

벡터를 120 행 행렬로 변환합니다. median은이 행렬에서 직접 연산하고 각 열의 중앙값을 반환 할 수 있습니다.

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

''rand'는, 랜드 (2,3) '크기의 랜덤 배열을 만드는 난수를 발생한다 [2,3] 예를 들면. – Jonas

+0

@Jonas, 감사합니다! 두 가지 솔루션 모두 내게 많은 도움이되었고 완벽하게 잘 수행되었습니다. –

1

하면 사용할 수 accumarray S.Kupfer @

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);