How can I calculate the mean of certain rows of a matrix based on specific column values?

조회 수: 1 (최근 30일)
I have a matrix with 2 columns: example: A=[ 123 1; 444 2; 634 1; 311 1; 111 2; . . . 222 1; 312 1;]
First.I want to find the mean of the values in column 1 based on the values of column 2. Means for value 1(mean1) and for value 2(mean2).
Second. Ι want to subtract the means from the respective rows.The mean1 from the rows in column 1 that correspond to value 1 in column 2 and the mean2 from the rows in column 1 that correspond to 2 value in column 2. And take a column of the residuals without spoiling the sequence of the values.
thanks!

채택된 답변

Star Strider
Star Strider 2017년 1월 7일
편집: Star Strider 2017년 1월 7일
This works:
A = [ 123 1; 444 2; 634 1; 311 1; 111 2; 222 1; 312 1];
Amean = accumarray(A(:,2), A(:,1), [], @mean) % Calculate Means
AmeanMtx = [Amean [1;2]] % Amean For The Appropriate Column #2 (For Demonstration Only, Can Be Deleted)
Aresd = A(:,1)-Amean(A(:,2)) % Use The Second Column To Index ‘Amean’ To Calculate The Residuals
Amean =
320.4
277.5
AmeanMtx =
320.4 1
277.5 2
Aresd =
-197.4
166.5
313.6
-9.4
-166.5
-98.4
-8.4
EDIT Added comment documentation.

추가 답변 (0개)

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by