Create a vector with block elements of the same value

8 次查看(过去 30 天)
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 个评论
Walter Roberson
Walter Roberson 2012-3-9
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.

请先登录,再进行评论。

采纳的回答

Sean de Wolski
Sean de Wolski 2012-3-9
K=3;
N=3;
v = reshape(repmat(1:K,N,1),1,N*K)

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Large Files and Big Data 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by