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

조회 수: 2 (최근 30일)
Pappu Murthy
Pappu Murthy 2018년 5월 24일
편집: Stephen23 2018년 5월 25일
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
Majid Farzaneh
Majid Farzaneh 2018년 5월 24일
편집: Majid Farzaneh 2018년 5월 24일
Hi. I'm not completely sure about my understanding. Is this a correct example for your problem???
Input=
3 1 1 2 4 5 6
3 4 5 6 2 5 6
3 2 3 5 6 3 7
Output =
3 2.3333 3.0000 4.3333 4.0000 4.3333 6.3333
Which 2.3333 is mean of 1,4,2 (column 2) and 3.000 is mean of 1,5,3 (column 3) etc.
Pappu Murthy
Pappu Murthy 2018년 5월 25일
that is correct. the three rows now reduce to just one row with column 1 entry being now 3.

댓글을 달려면 로그인하십시오.

채택된 답변

Majid Farzaneh
Majid Farzaneh 2018년 5월 24일
편집: Majid Farzaneh 2018년 5월 24일
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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by