How to produce a matrix that averages the top 5 values, for a corresponding year?

1 view (last 30 days)
I would like to produce an average of the top 5 values (on the 5th column, blue) for the corresponding year. I have attached my initial data as an attachment. My difficulty is that the matrix has multiple columns, so how do I choose that column (circled in blue), to calculate averages?

Accepted Answer

KSSV
KSSV on 10 May 2018
Let A be your data of dimensions n*4. A has n number of rows and four columns. YOu can extract fourth column from A using.
flows = A(:,4) ; % This gives you fourth column
years = A(:,1) ; % This extracts the years from the data
% GEt mean of top five elements
iwant = mean(flows(1:5)) ;
If you have multiple years in the data, then you need to extract the respective year flows and get mean of top five values.
flows_1938 = flows(years==1938) ; % This gives flows of the year 1938
iwant_1938 = mean(flows(1:5)) ;
  2 Comments
Naveed Hossain
Naveed Hossain on 10 May 2018
Would you happen to know how to produce a matrix, where it would look like the following:
Year Flows
1938 (Top 5 Average for 1938)
1939 (Top 5 average for 1939)
1940 etc
end
KSSV
KSSV on 10 May 2018
flows = A(:,4) ; % This gives you fourth column
years = A(:,1) ; % This extracts the years from the data
% GEt years alone
[Y,ia,ib] = unique(years) ;
NY = length(Y) ; % number of years
iwant = zeros(N,2) ;
for i =1:n
F = flows(years==Y(i)) ;
if length(F)>5
iwant(i,:) = [Y(i) mean(F(1:5))] ;
else
iwant(i,:) = [Y(i) mean(F)] ;
end
end

Sign in to comment.

More Answers (0)

Categories

Find more on Biomedical Signal Processing in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!