Vectorization with a loop and repmat

18 Ansichten (letzte 30 Tage)
yoshiyuki
yoshiyuki am 14 Aug. 2014
Beantwortet: Matt J am 14 Aug. 2014
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

Akzeptierte Antwort

Michael Haderlein
Michael Haderlein am 14 Aug. 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 Kommentar
yoshiyuki
yoshiyuki am 14 Aug. 2014
Michael Thanks a lot for your elegant answer!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Azzi Abdelmalek
Azzi Abdelmalek am 14 Aug. 2014
Bearbeitet: Azzi Abdelmalek am 14 Aug. 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 am 14 Aug. 2014
y=k:n-1;
m = fliplr(toeplitz([n,y],[n,fliplr(y)]))

Kategorien

Mehr zu Just for fun finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by