Increasing size of Multidimensional Array

조회 수: 10 (최근 30일)
teresa
teresa 2015년 6월 22일
댓글: Guillaume 2015년 6월 22일
Hi all,
I have one multidimensional array T of size (n1,n2,n3,...) and I need to build a new array S of size (n1+1,n2+1,n3+1,...) with the same values of A and zeros in all the added coefficients. In other words, I need to pad one "slice" of zeros at the end of each dimension of T.
The problem is that I don't know the size of T until runtime... so code should work for any number of dimensions...
Any idea how to do it? (other than a extremely slow loop in all coefficients of A) Thanks in advance! Sergio
  댓글 수: 3
Azzi Abdelmalek
Azzi Abdelmalek 2015년 6월 22일
Usuaris, have you looked at the two answers?
teresa
teresa 2015년 6월 22일
I haven't! sorry.
Your solution is more simple than mine. Thanks for your answer.

댓글을 달려면 로그인하십시오.

답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2015년 6월 22일
idx=num2cell(size(T)+1);
T(idx{:})=0;
  댓글 수: 2
Stephen23
Stephen23 2015년 6월 22일
편집: Stephen23 2015년 6월 22일
Very tidy solution. To answer the original question first assign T to a new array S:
S = T;
X = num2cell(1+size(S));
S(X{:}) = 0;
Guillaume
Guillaume 2015년 6월 22일
Indeed! Much simpler (and faster) than mine.

댓글을 달려면 로그인하십시오.


Guillaume
Guillaume 2015년 6월 22일
newT = zeros(size(T) + 1); %create new array with increased size
destidx = arrayfun(@(s) 1:s, size(T), 'UniformOutput', false);
newT(destidx{:}) = T
The last line is the programmatic equivalent of
newT(1:size(T, 1), 1:size(T, 2), 1:size(T, 3), ...) = T
And the line before that is just building these indices

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by