Matrix from an array

4 views (last 30 days)
brijesh soni
brijesh soni on 26 Sep 2019
Commented: brijesh soni on 26 Sep 2019
Let say A=1:15 is an array. How to obtain a matrix such that
B = [1 2 3 4 5 6; 4 5 6 7 8 9; 7 8 9 10 11 12; 10 11 12 13 14 15] ; %last n=3 elements of previous row repeats
  1 Comment
Ankit
Ankit on 26 Sep 2019
You need to create a loop in case you want to do it repeated number of times
A=1:15;
B = [A(1:6);A(4:9);A(7:12);A(10:15)];

Sign in to comment.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 26 Sep 2019
Edited: Andrei Bobrov on 26 Sep 2019
A=1:15;
n = 6;
k = 3;
m = numel(A);
B = A((1:k:m - n + 1)' + (0:n-1));
% for old MATLAB < R2016a
B = A(bsxfun(@plus,(1:k:m - n + 1)', (0:n-1)));

More Answers (1)

Bob Thompson
Bob Thompson on 26 Sep 2019
Not sure how to do it without a loop or just defining the indices, but here's something simple.
A = 1:15;
for i = 1:length(A)/3-1
B(i,:) = A((i-1)*3:(i+1)*3);
end

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!