Effacer les filtres
Effacer les filtres

Can I partition a matrix ito several seperated parts ?

2 vues (au cours des 30 derniers jours)
omar th
omar th le 31 Mar 2022
Commenté : omar th le 1 Avr 2022
can I partition this matrix into 4 parts ?
assume this matrix 29X1, A = [2;2;-3;4;5;6;7;-8;9;-6;5;4;-2;1;3;-9;8;7;4;-5;6;3;2;-1;4;-7;-8;5;-6];
so, I want to group this matrix into 4 seperated groups such as B=7X1, C=7X1, D=7X1, and E=8X1 ?

Réponse acceptée

Voss
Voss le 31 Mar 2022
A = [2;2;-3;4;5;6;7;-8;9;-6;5;4;-2;1;3;-9;8;7;4;-5;6;3;2;-1;4;-7;-8;5;-6];
% maybe this:
B = A(1:7);
C = A(8:14);
D = A(15:21);
E = A(22:29);
% or maybe this:
B = A(2:4:end);
C = A(3:4:end);
D = A(4:4:end);
E = A(1:4:end);
% etc., many other partitionings are possible
  4 commentaires
Walter Roberson
Walter Roberson le 1 Avr 2022
Ah, I don't think there was any way any of us could have guessed you wanted to select in that order.
omar th
omar th le 1 Avr 2022
actually its not exactly in that order for sure i changed it, but this approach worked in my assumption
thanks again

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 31 Mar 2022
A = [2;2;-3;4;5;6;7;-8;9;-6;5;4;-2;1;3;-9;8;7;4;-5;6;3;2;-1;4;-7;-8;5;-6];
parts = mat2cell(A, [7, 7, 7, 8], 1);
[B, C, D, E] = parts{:};
whos
Name Size Bytes Class Attributes A 29x1 232 double B 7x1 56 double C 7x1 56 double D 7x1 56 double E 8x1 64 double parts 4x1 648 cell
  3 commentaires
Walter Roberson
Walter Roberson le 31 Mar 2022
Your desired outcome is not defined. Do you always want 4 blocks, and the first three of them should be equal, and the last should absorb any extra capacity ?
A = randi([-9 9], 35, 1);
nrow = size(A,1);
each = floor(nrow/4);
parts = mat2cell(A, [each, each, each, nrow - 3*each], 1);
[B, C, D, E] = parts{:};
whos
Name Size Bytes Class Attributes A 35x1 280 double B 8x1 64 double C 8x1 64 double D 8x1 64 double E 11x1 88 double each 1x1 8 double nrow 1x1 8 double parts 4x1 696 cell
That gives 8, 8, 8, 11.
But perhaps you would instead prefer 9, 9, 9, 8 -- in which the last matrix might be shorter, but the distribution is more even.
omar th
omar th le 1 Avr 2022
thank you so much

Connectez-vous pour commenter.

Catégories

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

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by