partitioning a matrix based on another

3 visualizaciones (últimos 30 días)
Rabeya
Rabeya el 17 de Mayo de 2012
I have two matrices,say, X=[1 2 2; 2 3 3; 3 5 5 ;6 1 2; 3 4 3] and ng=[2;3]. I want to partition X based on ng, i.e.
x1=[1 2 2; 2 3 3], i.e. taking the ng(1) number of rows x2=[3 5 5 ;6 1 2; 3 4 3] , ng(2) number of rows where
X=[x1;x2].
I can do it using a for loop, but is there any efficient way to do this? This is just an example, there can be a larger ng, and also x
  2 comentarios
Thomas
Thomas el 17 de Mayo de 2012
do you always have two elements in ng? or can you have more?
Jan
Jan el 17 de Mayo de 2012
I assume, the FOR loop will be the most efficient method - it is required inside MAT2CELL also. If you post your code, we could potentially find improvements.

Iniciar sesión para comentar.

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 17 de Mayo de 2012
k = mat2cell(X,ng,size(X,2))
[x1,x2] = k{:}

Más respuestas (1)

Honglei Chen
Honglei Chen el 17 de Mayo de 2012
If your matrix can be exactly partitioned, you can use mat2cell. In your problem, X has 5 lines, which cannot be evenly divided by your ng, so I added one line
X=[1 2 2; 2 3 3; 3 5 5 ;6 1 2; 3 4 3; 5 3 2]
y = mat2cell(X,ng(1)*ones(1,size(X,1)/ng(1)),ng(2)*ones(1,size(X,2)/ng(2)))
  2 comentarios
Rabeya
Rabeya el 17 de Mayo de 2012
I want to partition it, depending on ng
Honglei Chen
Honglei Chen el 18 de Mayo de 2012
Did you try? Each cell of y holds a partition.

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by