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