Vectorization with a loop and repmat

i would like to vectoralize the following codes with loop;
n=5;
k=3;
x=(k:n)';
m=[];
for i = 1 : (n-k+1)
m=[m,x];
x=circshift(x,-1);
end
example;
k=3, n=5
3 4 5,
4 5 3,
5 3 4
please help me out

 Réponse acceptée

Michael Haderlein
Michael Haderlein le 14 Août 2014
That sounds like a nice cody task ;-) I'm sure there are dozens of solution, so my suggestion is:
m=k+mod(bsxfun(@(x,y) y+x,(0:n-k)',0:n-k),n-k+1);

1 commentaire

yoshiyuki
yoshiyuki le 14 Août 2014
Michael Thanks a lot for your elegant answer!

Connectez-vous pour commenter.

Plus de réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 14 Août 2014
Modifié(e) : Azzi Abdelmalek le 14 Août 2014
n=5;
k=3;
x=(k:n)'
idx=rem(bsxfun(@plus,(0:n-k)',(0:n-k)),n-k+1)+1
out=x(idx)
Matt J
Matt J le 14 Août 2014
y=k:n-1;
m = fliplr(toeplitz([n,y],[n,fliplr(y)]))

Catégories

En savoir plus sur Just for fun dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by