Matrix number of rows reduction to a smaller number of rows.

11 views (last 30 days)
Pappu Murthy
Pappu Murthy on 24 May 2018
Edited: Stephen on 25 May 2018
I have a matrix for example Nrow, by 6 let us say. The first column has numbers 1 thru n which is less than Nrow.. so some rows have same number in column 1. for example the number 3 may be occurring three times and number 4, 4 times etc. I have to reduce the matrix rows from Nrow to n... the rows which have same column 1 number have to be replace by one row which is is a mean of all rows with same number. for e.g. row with column number 3 could be like this
3, 1, 1, 2, 4, 5, 6
3, 4, 5, 6, 2, 5, 6
3, 2, 3, 5, 6, 3, 7
so we have three rows with same column 1 that is 3. so I replace these three rows with one row; 3, mean of all three rows. So basically i squeeze the Matrix of [Nrow, 6] to a matrix of [n, 6]; How do I do this?
Thanks in advance.
  2 Comments
Pappu Murthy
Pappu Murthy on 25 May 2018
that is correct. the three rows now reduce to just one row with column 1 entry being now 3.

Sign in to comment.

Accepted Answer

Majid Farzaneh
Majid Farzaneh on 24 May 2018
Edited: Majid Farzaneh on 24 May 2018
Use this:
% A is your input matrix and B is squeezed matrix
for i=1:n
idx=find(i==A(:,1));
B(i,:)=mean(A(idx,:),1);
end

More Answers (0)

Community Treasure Hunt

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

Start Hunting!