MATLAB: Average array values based on identical values.

arraysaverageMATLABmean

I have data in array forms consisting of an x position(positive doubles), a specific y value associated with each x position and plane heights that the data falls on as z values. I want to average the y values for identical x values for each specific z value. For example:
A=[1.0 2.0 0.5; 1.0 4.0 0.5; 1.1 2.0 0.5; 1.1 4.0 0.6]
Result of new array is then [1.0 3.0 0.5; 1.1 2.0 0.5; 1.1 4.0 0.6]
So far I can average the y values for a specific x value with: newData = [unique( data(:,1) ),… accumarray( data(:,1), data(:,2), [], @mean )]
But I get stuck when including the z values.

Best Answer

One approach:
A=[1.0 2.0 0.5; 1.0 4.0 0.5; 1.1 2.0 0.5; 1.1 4.0 0.6];
[Au,ia,ic] = unique(A(:,[1 3]), 'rows'); % Unique Rows For ‘A(:,[1 3])’ Only
y_mean = accumarray(ic, A(:,2), [], @mean); % Corresponding Mean Of ‘y’ Values
Result = [Au(:,1) y_mean Au(:,2)]; % Concatenate To Produce Desired Result Matrix
Result =
1 3 0.5
1.1 2 0.5
1.1 4 0.6