Sum N many of the same array, which are each offset by an integer M
조회 수: 3 (최근 30일)
이전 댓글 표시
I have an array A = [1; 2; 3; 2; 1] and I would like to make an new array B, which is equal to the sum of N many of A, where array N+1 is off set by M many interfers from array N.
Say N = 3 and M = 1, the new array would be B = [1+0+0; 2+1+0; 3+2+1, 2+3+2; 1+2+3; 0+1+2; 0+0+1].
I need A to be an array of any size and I would like to have control over the size of N and M. A will always be 1D in this case
I have attched a picutre of the problem excel. In one case M = 1 and the other M = 2. In both cases N = 3.
Thanks for any help you can offer
댓글 수: 0
채택된 답변
David Hill
2019년 11월 27일
function B = movSum(A,n,m)
B=A;
for k=2:n
B=[B;zeros(m,1)]+[zeros((k-1)*m,1);A];
end
end
댓글 수: 0
추가 답변 (1개)
Turlough Hughes
2019년 11월 27일
편집: Turlough Hughes
2019년 11월 27일
The following should do the job:
N = 3; M = 2; % Inputs
A_t = [1:N N-1:-1:1]'; %single vector 1,2,3,...,N,...,3,2,1
A = zeros((N-1)*M+length(A_t),N); % Preallocate memory for A with zeros
for c = 1:N
A(c*M-1:c*M-2+length(A_t),c) = A_t; % Insert A_t and offset by additional M rows each time
end
The results are then:
A
B=sum(A,2)
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!