How to construct this vector without loop?

Hi, everyone:
I was wondering, is it possible to construct following vector without for loop?
A=[1 2 3 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 .....]
or equivalently A=[1:(3*1), 1:(3*2), 1:(3*3), 1:(3*4), ...., 1:(3*n)]
Many thanks!

 채택된 답변

Jos (10584)
Jos (10584) 2013년 10월 23일
편집: Jos (10584) 2013년 10월 23일

0 개 추천

Here is flexible version not using cell2mat:
n = 4 ; % user specified
V = 3 ; % as in the example -> [1:V 1:2*V ... 1:n*V]
ix = V*[1:n]
A = ones(1,sum(ix))
ix =ix(1:n-1)
A(cumsum(ix)+1)=-ix+1
A = cumsum(A) % result

추가 답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2013년 10월 23일
편집: Azzi Abdelmalek 2013년 10월 23일

0 개 추천

A=[1 2 3 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9]
cell2mat(arrayfun(@(x) 1:3*x,A,'un',0))
Vivek Selvam
Vivek Selvam 2013년 10월 23일
편집: Vivek Selvam 2013년 10월 23일

0 개 추천

vec = 3*(1:n);
A = cell2mat(arrayfun(@(x) 1:x,vec,'UniformOutput',0));
or
vec = 1:n;
A = cell2mat(arrayfun(@(x) 1:3*x,vec,'UniformOutput',0));

카테고리

도움말 센터File Exchange에서 Programming에 대해 자세히 알아보기

제품

태그

질문:

2013년 10월 23일

편집:

2013년 10월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by