Create vector with predetermined number of certain elements

15 ビュー (過去 30 日間)
Bartdp
Bartdp 2016 年 3 月 27 日
コメント済み: Star Strider 2016 年 3 月 27 日
Hi everyone,
I have a problem where I have a set of numbers, eg; [3 5 9] and for each of these numbers an amount of occurences eg. [2 1 5]. Now i would like to create a vector containing these numbers the prespecified amount of times, so for the example the result would be [3 3 5 9 9 9 9 9 ]. Is there an elegant way to do this in MATLAB, that is, vectorized?
Thanks in advance for your input.

採用された回答

Star Strider
Star Strider 2016 年 3 月 27 日
Use the repelem funciton:
V = [3 5 9];
N = [2 1 5];
Out = repelem(V, N)
Out =
3 3 5 9 9 9 9 9
  2 件のコメント
Bartdp
Bartdp 2016 年 3 月 27 日
編集済み: Bartdp 2016 年 3 月 27 日
Perfect ;), thanks for your answer.
Star Strider
Star Strider 2016 年 3 月 27 日
My pleasure!

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2016 年 3 月 27 日
Here's one straightforward, easy-to-understand way that's pretty fast.
numbers = [3 5 9];
occurrences = [2 1 5];
output = zeros(1, sum(occurrences));
index1 = 1;
for k = 1 : length(numbers)
index2 = index1 + occurrences(k) - 1;
output(index1:index2) = numbers(k)
index1 = index2 + 1;
end
  1 件のコメント
Bartdp
Bartdp 2016 年 3 月 27 日
編集済み: Bartdp 2016 年 3 月 27 日
Thanks for your answer. I need to create such a vector several times within the body of a loop, and therefore making a lot of them. Do you have any idea on how to vectorize this code? Thanks in advance

サインインしてコメントする。

カテゴリ

Help Center および File ExchangePerformance and Memory についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by