Create a vector with block elements of the same value

5 ビュー (過去 30 日間)
Martijn
Martijn 2012 年 3 月 9 日
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 Center および File ExchangeInterpolation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by