How do I start counting when below a threshold and stop counting above the same threshold in a timeseries?
1 次查看(过去 30 天)
显示 更早的评论
I modeled wind speed data for a whole year and now I want to count the amount of consecutive hours that the wind is below a certain threshold. I have to find out the maximum consecutive hours of wind below that threshold. The arrows show the possible longest periods below a threshold of 2. How can I find out which period is the longest and how long it is?
Thanks in advance!
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/978015/image.png)
0 个评论
回答(2 个)
Umang Pandey
2023-10-6
Hi Hans,
I understand that you want to count the number of consecutive hours based on a certain threshold.
The following MATLAB Answer where the user wants to count the number of times the signal is above certain threshold, might be of help:
Best,
Umang
0 个评论
Fabio Freschi
2023-10-6
Below you can find a possible solution that does not require any toolbox
% signal length
N = 100;
% threshold
t = 0.5;
% your signal
x = rand(N,1);
% plot
figure, hold on
plot(1:N,x,'o-');
plot([1 N],[t t])
% find values below threshold
y = x < t;
% plot
plot(find(y),x(y),'*');
% find changes in vector y
f = find(diff([0; y; 0] == 0));
% start indices of consecutive values below threshold
s = f(1:2:end);
% count the number of consecutive values below threshold
c = f(2:2:end)-s;
% report on plot
text(s,x(s),num2str(c),'FontSize',14)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Signal Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!