How can I calculate average values of one data according to specific indexes of same size?
이전 댓글 표시
Hi all,
I am intending to calculate average values of density(832695x1 double) according to depth indexes(832695x1 double), in order to obtain one single value of density for each 1 unit depth - elucidated by the table below.

I tried to find a solution applying the following loop; however the results have been not what I was expecting.
if depth_ind=round(depth);
for i=1:1:length(dens)-8
if depth_ind(i)==depth_ind(i+8)
M(i)=(dens(i)+dens(i+1)+dens(i+2)+dens(i+3)+dens(i+4)+dens(i+5)+dens(i+6)+dens(i+7)+dens(i+8))/9;
elseif depth_ind(i)==depth_ind(i+7)
M(i)=(dens(i)+dens(i+1)+dens(i+2)+dens(i+3)+dens(i+4)+dens(i+5)+dens(i+6)+dens(i+7))/8;
elseif depth_ind(i)==depth_ind(i+6)
M(i)=(dens(i)+dens(i+1)+dens(i+2)+dens(i+3)+dens(i+4)+dens(i+5)+dens(i+6))/7;
elseif depth_ind(i)==depth_ind(i+5)
M(i)=(dens(i)+dens(i+1)+dens(i+2)+dens(i+3)+dens(i+4)+dens(i+5))/6;
elseif depth_ind(i)==depth_ind(i+4)
M(i)=(dens(i)+dens(i+1)+dens(i+2)+dens(i+3)+dens(i+4))/5;
elseif depth_ind(i)==depth_ind(i+3)
M(i)=(dens(i)+dens(i+1)+dens(i+2)+dens(i+3))/4;
elseif depth_ind(i)==depth_ind(i+2)
M(i)=(dens(i)+dens(i+1)+dens(i+2))/3;
elseif depth_ind(i)==depth_ind(i+1)
M(i)=(dens(i)+dens(i+1))/2;
else
M(i)=dens(i);
end
end
How could I do that properly?
Thank you for your time,
채택된 답변
추가 답변 (1개)
Andrei Bobrov
2015년 6월 30일
편집: Andrei Bobrov
2015년 6월 30일
n = xlsread('path_and_name_your_file_data.xlsx');
out1 = accumarray(n(:,1),n(:,2),[],@mean);
out = [n(:,1),out1(n(:,1))];
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
