How I can split a matrix in four matrixes

7 visualizzazioni (ultimi 30 giorni)
Maryam Hamrahi il 28 Giu 2016
Risposto: David Sanchez il 28 Giu 2016
I have a nx3 matrix and I would like to split it in four matrices with different number of rows and three columns. any help is appreciated.
3 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Stephen23 il 28 Giu 2016
So if the number of rows n is unknown, how many rows are in each of the four matrices ?
Have you tried using indexing, or mat2cell ?
Maryam Hamrahi il 28 Giu 2016
Number of rows in each matrices are not important. I am applying a code whcih contains a loop and it gives me error when the number of rows are more than 10000. So, I want to split the matrix to prevent the error.
I just need split the matrix in smaller matrices.

Accedi per commentare.

Risposta accettata

KSSV il 28 Giu 2016
clc; clear all ;
A = rand(100,3) ; % rows should be greater then 4
a = size(A,1); % rows in A
n = 4; % number of partitions
out = diff([0,sort(randperm(a-1,n-1)),a]); % split rows into four random parts
% else you enter your own four numbers such that sum is size(A,1)
% four matrices
A1 = A(1:out(1),:) ;
A2 = A(out(1)+1:out(1)+out(2),:) ;
A3 = A(out(2)+1:out(2)+out(3),:) ;
A4 = A(out(3)+1:out(3)+out(4),:) ;
0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

Più risposte (1)

David Sanchez il 28 Giu 2016
M = rand(1001,3); % your matrix
L = size(M,1); % L = number of rows
n = floor(L/4); % number of rows for your matrices
N = cell(4,1);
for k=1:3
N{k,1} = M( ((k-1)*n+1):n*k,: );
end
N{4,1} = M((3*n+1):L,:);
N_1 = cell2mat(N(1,1));
0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by