필터 지우기
필터 지우기

Method to compound daily data by n-days?

조회 수: 3 (최근 30일)
Walter
Walter 2012년 9월 12일
Given:
[1 2 3 4 5 6] and n = 1,
return [1, 2, 3, 4, 5, 6]
given n=2, return: [1*2, 3*4, 5*6]
given n=3, return: [1*2*3, 4*5*6]
given n=4, return [1*2*3*4]
given n=5, return [1*2*3*4*5]
given n=6, return [1*2*3*4*5*6]
not sure what to call this algorithm, but can anyone think of a clever way to do it?

답변 (2개)

Yi Sui
Yi Sui 2012년 9월 12일
function re = foo(x,n)
len = length(x);
seg = floor(len/n);
res = mod(len,n);
x2 = mat2cell(x,1,[ones(1,seg).*n res]);
re = cellfun(@prod,x2);
re = re(1:end-1);

Andrei Bobrov
Andrei Bobrov 2012년 9월 12일
I = 1:6; % The initial array
out = nonzeros(prod(reshape([I,zeros(1,mod(-numel(I),n))],n,[])))';

카테고리

Help CenterFile Exchange에서 Multidimensional Arrays에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by