Create a vector with block elements of the same value

5 Ansichten (letzte 30 Tage)
Martijn
Martijn am 9 Mär. 2012
For my superfast code (no element wise evaluation of collocation points, but vector-wise) to evaluate Uniform cubic B-splines, I am looking for an answer to the following question:
I wish to create a vector that should contain this N blocks of size k the same values (starting from 1,2,3...up to N). As an example:
suppose k=3 and N=3, I want: [1 1 1 2 2 2 3 3 3 ]
I should be quite an easy thing to do, but I just can figure it out how to do it. Hope you guys can help!
  1 Kommentar
Walter Roberson
Walter Roberson am 9 Mär. 2012
ndgrid() or meshgrid(), take a single output and reshape it to be a vector.
I do not have access at the moment to test the exact sequence.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Sean de Wolski
Sean de Wolski am 9 Mär. 2012
K=3;
N=3;
v = reshape(repmat(1:K,N,1),1,N*K)

Weitere Antworten (1)

Oleg Komarov
Oleg Komarov am 9 Mär. 2012
Another approach, run-length decoding:
nk = n*k;
out = zeros(1,nk);
out(1:k:nk) = 1;
out = cumsum(out);

Kategorien

Mehr zu Interpolation 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