MATLAB: How to find time interval of peak value in a timeseries

peak loadthresholdtimeseries

i have a load profile data set.. Time vs Load Demand as a timeseries object. If I have a threshold for peak as 800KW How do I find at what time my value goes above 800 kW ? The time series object is for every 30 mins interval over 24 hrs.
I need to find the highlighted time interval in the picture. Any idea?

Best Answer

If you want to interpolate to find the ‘exact’ time, this works:
t = 0 : 30 : 1440;
LD = 500 + 400*sin(2*pi*t/2880);
zci = @(v) find(v(:).*circshift(v(:), [-1 0]) <= 0); % Returns Approximate Zero-Crossing Indices Of Argument Vector
X800_idx = zci(LD - 800); % Subtract 800, Find Approximate Zero-Crossing
LD800_Rng = LD(X800_idx-1 : X800_idx+1)'; % Define Range For Interpolation

t800_Rng = t(X800_idx-1 : X800_idx+1)'; % Define Range For Interpolation
t800 = interp1(LD800_Rng, t800_Rng, 800, 'linear', 'extrap'); % Find ‘Exact’ Time (Minutes)
figure(1)
plot(t, LD)
hold on
plot(t800, 800, '*r')
hold off
grid
Related Question