MATLAB: Binning CTD data into 10m intervals and corresponding data in separate columns

ctdoceanographyplanktonvideo plankton recordervpr

Hi everyone, first time posting here. I am trying to bin the following data that I have stored in a array (5026 X 6 double).
The 6 columns are the same length and contain data for: (1)time (2)pressure (3)temperature (4)salinity (5)density (6)frames/row.
I want to bin all the data into 10 meter intervals using pressure while retaining the 6 column structure. The 6th column I need to be binned into the 10m intervals as a sum.
Any suggestions would be greatly appreciated!
Thank you in advance!

Best Answer

I think pairing histc with accumarray will help:
x = rand(100,6);
x(:,1) = 1:100;
x(:,2) = sort(x(:,2))*100; % Some fake data
xbin = 0:10:100;
[n, idx] = histc(x(:,2), xbin);
sz = [max(idx) 1];
a = accumarray(idx, x(:,6), sz); % Sums by default...
b = accumarray(idx, x(:,4), sz, @mean, NaN); % or choose a different function
c = accumarray(idx, x(:,5), sz, @(x) {x}); % or gather everything