How to construct this matrix without loop?

1 view (last 30 days)
Ming
Ming on 28 Oct 2013
Edited: Matt J on 28 Oct 2013
Hi, everyone:
suppose I have a vector x=[a b c d e f g h ... z]. Is it possible to construct a matrix such that:
X=[a b c d; b c d e; c d e f; d e f g; e f g h; ... w x y z];
without for-loop?
many thanks

Accepted Answer

Matt J
Matt J on 28 Oct 2013
Edited: Matt J on 28 Oct 2013
X = x(bsxfun(@plus,(0:22).',(1:4)))

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 28 Oct 2013
Edited: Azzi Abdelmalek on 28 Oct 2013
Example
x=[2 4 8 12 13 19 20 25]
out=cell2mat(arrayfun(@(ii) x(ii:ii+3),(1:numel(x)-3)','un',0))

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!