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

2 Ansichten (letzte 30 Tage)
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

Antworten (2)

Azzi Abdelmalek
Azzi Abdelmalek am 14 Mär. 2013
Bearbeitet: Azzi Abdelmalek am 14 Mär. 2013
b=A(:,3)
b(b==c)=yourvalue
A(:,3)=b
  17 Kommentare
Sarah
Sarah am 14 Mär. 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 am 14 Mär. 2013
Bearbeitet: Azzi Abdelmalek am 14 Mär. 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

Melden Sie sich an, um zu kommentieren.


Sarah
Sarah am 14 Mär. 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];

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by