Converting 3D data to 2D

1 view (last 30 days)
Josh K
Josh K on 6 Dec 2017
Commented: Josh K on 6 Dec 2017
I have a 50x4 matrix with the columns being x, y, z, and a value. I want to average each x,y point through the z to convert my 3D data to a 2D.
  2 Comments
Walter Roberson
Walter Roberson on 6 Dec 2017
Does your data form a regular grid, perhaps 5 x 5 x 2 ?
Or is it scattered data that is not on a grid?
Josh K
Josh K on 6 Dec 2017
It is a 5 x 5 x 2. I eventually want to read in much larger data sets but I want to get a working code for this size first.

Sign in to comment.

Accepted Answer

Jos (10584)
Jos (10584) on 6 Dec 2017
So, you want to ignore the z, and average the values for each specific combination of (x,y)?
xyzv = [1 1 1 10 ; 1 1 2 20 ; 1 2 3 30 ; 1 2 5 40 ; 2 2 4 10] % test data
[xy,~,j] = unique(xyzv(:,[1 2]),'rows') % unique combinations of (x,y)
xyv = [xy accumarray(j,xyzv(:,4),[size(xy,1),1],@mean)] % ignore z, average v

More Answers (0)

Categories

Find more on Animation in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!