create vector of repeating elements (sort of)
조회 수: 6 (최근 30일)
이전 댓글 표시
How can I easily create a vector such that:
w = 3
n = 8
v = (1 w times) (2 w times) (3 w times) ... (n w times)
so i would have:
v = [1 1 1 2 2 2 3 3 3 4 4 4 .... 8 8 8]
댓글 수: 0
채택된 답변
추가 답변 (4개)
Richard Tyson
2013년 8월 15일
If you need it to be fast you should avoid using repmat. Stick to C functions which don't need to parse input arguments and do one specific task:
n = 8;
w = 3;
v = ceil( [1:(w*n)]./w )
If anyone has a faster way please post. I do this kind of operation a lot.
댓글 수: 2
the cyclist
2013년 8월 15일
This thread is nearly two years old. You might want to post this as a new question.
Lucas García
2011년 9월 20일
One of many ways:
>> w = 3; n = 8;
>> v = repmat(1:n,w,1);
>> v = v(1:end)
댓글 수: 0
Wayne King
2011년 9월 20일
One way:
w = 3;
x = 1:8;
x = arrayfun(@(x) repmat(x,1,w),x,'UniformOutput',false);
x = cell2mat(x);
Wayne
댓글 수: 1
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!