Matrix from an array

4 vues (au cours des 30 derniers jours)
brijesh soni
brijesh soni le 26 Sep 2019
Commenté : brijesh soni le 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 commentaire
Ankit
Ankit le 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)];

Connectez-vous pour commenter.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 26 Sep 2019
Modifié(e) : Andrei Bobrov le 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)));
  1 commentaire
brijesh soni
brijesh soni le 26 Sep 2019
Many thanks !

Connectez-vous pour commenter.

Plus de réponses (1)

Bob Thompson
Bob Thompson le 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

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by