How do I find the corresponding dates for maximum prices?

Hello. I have a matrix A with dimensions 366x24 which contains values and a matrix B which contains dates-time (366x24 datetime). For each row of matrix A I found the maximum value (366X1). What I'm trying to do is find out on what date these maximum values correspond. Below is the code I wrote but the results it gives me are wrong.
Max_values=max(A,[],2);
Time_1=find(A==Max_values);
Time_of_max_values=B(Time_1);
Your help is important!

Answers (1)

[Max_values, Max_index] = max(A,[],2);
Time_of_max_values = B(Max_index)
This assumes that if multiple copies of the same maximum value appear in a row, that you only want to see one of them. If that is not true, then you need a redesign as each row would have a variable number of times associated.
arrayfun(@(rowidx) B(A(rowidx,:) == max(A(rowidx,:))), (1:size(A,1)).', 'uniform', 0)

3 Comments

Itried the above but there is a problem. For example, the maximum value of the first row is in position A (1,17) = 30 and this maximum value corresponds to the date 1/1/2012 16:00 (or B(1,17)). Matrix Max_index shows the number 17 in position (1,1) which is correct. But when I put the number 17 in matrix B (Time_of_max_values = B(17) it gives me as an answer 17/1/1012 and not 1/1/2021-16:00.
Could you confirm that the year shown ins 1012? Not even 2012, but over 1000 years ago??
Can you attach your matrices for testing?
Sorry. I mean 2012.
As for the matrices unfortunately i can not upload them

Sign in to comment.

Asked:

on 5 Apr 2021

Community Treasure Hunt

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

Start Hunting!