how can partition a vector into smaller sub sequences

12 Ansichten (letzte 30 Tage)
hanadi abbas
hanadi abbas am 7 Apr. 2021
Kommentiert: hanadi abbas am 7 Apr. 2021
Hi,
how can partition a vector into smaller sequences: for example, let A is a vector of 179901, N is another vector consists of 204 elements. I want to partition A into several sub sequences according to values of vector N such that
seq1=A(1:N(1))
seq2=A(1+N(1):N(1)+N(2))
seq3=A(1+N(1)+N(2):N(1)+N(2)+N(3))
and so on for other sequences
how can do this, I use MatlabR2017a. Thanks in advance

Akzeptierte Antwort

Stephen23
Stephen23 am 7 Apr. 2021
Bearbeitet: Stephen23 am 7 Apr. 2021
A = 1:19;
N = [3,5,7];
S = mat2cell(A(1:sum(N)),1,N)
S = 1×3 cell array
{[1 2 3]} {[4 5 6 7 8]} {[9 10 11 12 13 14 15]}
Or
V = cumsum([0,N]);
F = @(b,e)A(1+b:e);
S = arrayfun(F,V(1:end-1),V(2:end),'uni',0)
S = 1×3 cell array
{[1 2 3]} {[4 5 6 7 8]} {[9 10 11 12 13 14 15]}

Weitere Antworten (0)

Kategorien

Mehr zu Multidimensional Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by