Effacer les filtres
Effacer les filtres

How to calculate Cycles

14 vues (au cours des 30 derniers jours)
Mekala balaji
Mekala balaji le 22 Fév 2018
Commenté : Mekala balaji le 23 Fév 2018
Hi,
I have data, want to calculate cycles after each reset of lifetime(each cycle life hours are different),
lifeHours
0.2
3
12
18
22
0.8
1.5
2.9
5
8
11
17
1
4
5
8
13
17
23
28
Desired Output: Cycles start from 1
Cycles
1
1
1
1
1
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
Many thanks in advance,
  1 commentaire
Mekala balaji
Mekala balaji le 23 Fév 2018
Sir Thanks, it works

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 22 Fév 2018
If you have R2015 or later, you can use the repelem (link) function.
Defining ‘v’ as your vector:
[~,locs] = findpeaks(-v); % Find Minima
tlocs = [1; locs; numel(v)+1]; % Define Cycle Limits
dlocs = diff(tlocs); % Cycle Lengths
Output = repelem([1 2 3], dlocs)'; % Vector Of Cycle Designations (R2015a & Later)
Cycles = [v Output]
Cycles =
0.2 1
3 1
12 1
18 1
22 1
0.8 2
1.5 2
2.9 2
5 2
8 2
11 2
17 2
1 3
4 3
5 3
8 3
13 3
17 3
23 3
28 3

Plus de réponses (1)

Pawel Jastrzebski
Pawel Jastrzebski le 22 Fév 2018
Modifié(e) : Pawel Jastrzebski le 22 Fév 2018
Consider the following code:
data = [0.2 3 12 18 22 0.8 1.5 2.9 8 11 17 1 4 5 8 13 17 23 28]'
% preallocation
cycle(length(data),1) = 0
% manually mark a beginning of the first cycle
cycle(1) = 1;
for i=2:length(data)
if data(i)>data(i-1)
cycle(i) = cycle(i-1);
else
cycle(i) = cycle(i-1)+1;
end
end
cycle
The output:
>> cycle
cycle =
1
1
1
1
1
2
2
2
2
2
2
3
3
3
3
3
3
3
3

Community Treasure Hunt

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

Start Hunting!

Translated by