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

1 Ansicht (letzte 30 Tage)
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?

Akzeptierte Antwort

KSSV
KSSV am 10 Mai 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 Kommentare
Naveed Hossain
Naveed Hossain am 10 Mai 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 am 10 Mai 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Biomedical Signal Processing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by