2 views (last 30 days)

Show older comments

Matlab warrior! In the data travels, there is a column with start and end time. Each interval has certain value or zero. I have to find the most repeated time (hot spot) among those travels which is not equal to zero. For ex, among two, 1st interval "06:30"-"07:30", and second "06:00 - 07:00", then hotspot would be "06:30-07:00". I have tried smth like:

load_dumb = zeros(24*60+1,1);

for i = 1:length(end_timedumb)

[~, ~, ~, H, MN, ~] = datevec(st_timesumb(i));

T_Stdumb = H*60+MN+1;

[~, ~, ~, H, MN, ~] = datevec(end_timedumb(i));

T_Enddumb = H*60+MN+1;

if isnan(T_Enddumb)

continue

else

minscale_DCH1(T_Stdumb:T_Enddumb,1) = minscale(T_Stdumb:T_Enddumb,1) + 1;

load_dumb(T_Stdumb:T_Enddumb,1) = load_dumb(T_Stdumb:T_Enddumb,1) + dumb_chargingpower(i);

end

end

TimeM = 1:length(minscale);

TimeH = TimeM/60;

figure

plot(TimeH,load_dumb)

but that gives me only the overall peak that values accumulated among intervals. However, I need to find specific interval that is the most common.

Turlough Hughes
on 18 Sep 2020

First I read in data as a string array

opts = detectImportOptions(filename,'TextType','string');

opts.SelectedVariableNames = {'Var2','Var3'}; % alternatively {'Var4','Var5'}, or {'Var6','Var7'}

D = readmatrix(filename,opts);

Convert each string to a duration in terms of minutes from 00:00

D = minutes(duration(D,'InputFormat','hh:mm'));

D(D(:,2)==0,2)=1440; % set 00:00 in the second column to 1440 minutes

To find the hotspot, I create a logical array, M, which has the same number of rows as D, and 1440 columns (one for each minute of the day). Values are set to true if they fall within the range:

M = false(size(D,1),24*60);

for c = 1:size(D,1)

M(c,D(c,1)+1:D(c,2))=true;

end

You can then sum up each column to find the frequency with which a given minute appeared in the time intervals.

figure(), plot(duration(0,0,0):minutes(1):duration(23,59,0),sum(M))

One thing to note, if the range from your data begins and ends on the same minute then that minute is included using the code as it is.

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

Start Hunting!