How to calculate the duration of data points in days

2 次查看(过去 30 天)
Hi,
I have a daily data series with pulses. The data is for 1 year (starts in 1st day and end 365 days) but there are NAN values between as shown in image below.
Then I want to determine individual duration and mean duration for the three pulses with data e.g the duration from a1-a2, b1-b2, and c1-c2. Since i do have alot of data of this type i wanted some kind of loop to do the problem, because manual counting takes to much time.
Can someone help me with some code to determine this? Alternatively, a different way of determining the same thing would be appreciated.
Start_Date = datenum(1995,01,01);
End_Date = datenum(1995,12,31);
YearlyVEC = datevec((Start_Date:End_Date)');
So i wanted to determine the day also from the variable YearlyVEC,
a data of the pulses is also attched below
Thanks!

采纳的回答

Star Strider
Star Strider 2021-10-19
Try something like this —
Data = readmatrix('https://www.mathworks.com/matlabcentral/answers/uploaded_files/772213/pulses.txt');
Days = 1:numel(Data);
NaNStart = strfind(~isnan(Data(:).'), [0 1])+1;
NaNStop = strfind(~isnan(Data(:).'), [1 0]);
DiffDays = NaNStop - NaNStart;
cntr = NaNStart + DiffDays/2;
figure
plot(Days, Data)
hold on
% plot(Days(NaNStart), Data(NaNStart), '>r')
% plot(Days(NaNStop), Data(NaNStop), '<r')
hold off
grid
text(cntr, ones(size(cntr)).*min(Data([NaNStart; NaNStop])), compose('\\leftarrow %.0f Days\\rightarrow', DiffDays), 'Horiz','center', 'Vert','middle')
.
  5 个评论
Star Strider
Star Strider 2021-10-21
Noted!
My code worked for the example shown, however it may not be uniformly robust to all such data (as you discovered). Your modifications to it are appropriate.
.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by