Extract row elements corresponding to a particular column value and save as new matrix

2 visualizaciones (últimos 30 días)
I have a Mx4 matrix with the following format:
a1 b1 c d1
a2 b2 c d2
a3 b3 c d3
a4 b4 c1 d4
a5 b5 c1 d5
and what i want to do is create new matrices corresponding to the different c values in the third column renaming this matrix matc.
Any help would be really appreciated Sarah

Respuestas (2)

Azzi Abdelmalek
Azzi Abdelmalek el 14 de Mzo. de 2013
Editada: Azzi Abdelmalek el 14 de Mzo. de 2013
b=A(:,3)
b(b==c)=yourvalue
A(:,3)=b
  17 comentarios
Sarah
Sarah el 14 de Mzo. de 2013
the matrices are being created correctly with the original code, I only wish to now save each matrix that was created within the loop eg after the assignin('base',sprintf('mat%d',c(k)),A(idx,:)) line. I appreciate your help with this!
Azzi Abdelmalek
Azzi Abdelmalek el 14 de Mzo. de 2013
Editada: Azzi Abdelmalek el 14 de Mzo. de 2013
% Check this: for c=2.4 the variable will be mat2p4 instead of mat2.4
A= [ 2 3 4 6
4 8 7 9
5 2 7 1
4 2 2.4 3]
A=sortrows(A,3)
b=A(:,3);
c=unique(b);
for k=1:numel(c)
idx=find(b==c(k));
s=num2str(c(k))
s=strrep(s,'.','p')
assignin('base',['mat' s],A(idx,:))
end
Check the result
mat2p4
mat4
mat7

Iniciar sesión para comentar.


Sarah
Sarah el 14 de Mzo. de 2013
So the matrix is sorted according to the third column so
A1=[4 2 2 3
2 3 4 6
4 8 7 9
5 2 7 1];
the answers should be
mat2=[4 2 2 3];
mat4=[2 3 4 6];
mat7=[4 8 7 9
5 2 9 1];

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by