For loop with horzcat

2 vues (au cours des 30 derniers jours)
Ryosuke Saito
Ryosuke Saito le 12 Avr 2020
Commenté : Ryosuke Saito le 12 Avr 2020
Why does this not success?? Would someone help me correct the code?
A=[1 5; 3 3; 8 6; 4 8; 9 14; 11 11; 13 12; 15 7; 17 15; 1 20]
B=[]
for i=1:5
for j=1:5
B(i,:)=horzcat(B(i,:),A(i+j-1,:));
end
end
I'd like to get this
B=[1 5 3 3 8 6 4 8 9 14;3 3 8 6 4 8 9 14 11 11; 8 6 4 8 9 14 11 11 13 12; 4 8 9 14 11 11 13 12 15 7;9 14 11 11 13 12 15 7 17 15;11 11 13 12 15 7 17 15 1 20]

Réponse acceptée

Matt J
Matt J le 12 Avr 2020
Modifié(e) : Matt J le 12 Avr 2020
Another way,
AA=reshape(A.',[],1).';
B=cell(numel(AA),1);
for i=1:2:11
B{i}=AA(i:i+9);
end
B=cell2mat(B)
  1 commentaire
Ryosuke Saito
Ryosuke Saito le 12 Avr 2020
Thanks so much! This is exactly what I'd like to do and I found this works!!

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 12 Avr 2020
Modifié(e) : Matt J le 12 Avr 2020
horzcating in for-loops is bad practice. Better to do,
AA=reshape(A.',[],1).';
B=AA( (1:10)+(0:2:10).' )
  2 commentaires
Ryosuke Saito
Ryosuke Saito le 12 Avr 2020
Thanks for your comment. I am sorry that I set up a simple table as the contents of A here. Actual contents of A in the computation I am trying to do is much complicated. So the proposed solution is not useful.
Matt J
Matt J le 12 Avr 2020
My solution is independent of the contents of A.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by