I would like to count the number of peaks of a signal.
    18 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    mohamed ali
 el 25 de Feb. de 2023
  
    
    
    
    
    Comentada: Star Strider
      
      
 el 26 de Feb. de 2023
            Hello everone,
]I am working with a signal produced from my simulink model and I am doing some analysis on the signal but I dont know how to calculate the number of cycles? 
Best regards

0 comentarios
Respuesta aceptada
  Star Strider
      
      
 el 25 de Feb. de 2023
        
      Editada: Star Strider
      
      
 el 25 de Feb. de 2023
  
      Use the signal Processing Toolbox findpeaks function to count the peaks.  The plotted signal does not appear to be noisy, so it will likely not be necessary to use other name-value pair arguments (such as 'MinPeakProminence') to define the peaks).  (I have no idea if this works with Simulink, since I very rarely use Simulink.)  
Just use: 
t = ...;                                                        % Time Vector
s = ...;                                                        % Signal Vector
[pks,locs] = findpeaks(s);
NrPks = numel(pks)
.
2 comentarios
Más respuestas (2)
  Askic V
      
 el 25 de Feb. de 2023
        
      Editada: Askic V
      
 el 25 de Feb. de 2023
  
      t = 0:0.01:2;
y = sin(20*t);
[z, ind] = findpeaks(y);
plot(t,y)
hold on
plot(t(ind), z, 'o')
number_cylces = numel(diff(z))
If you need to find number of cycles, you need to fnd the number of peaks first. Matlab has a built in function called findpeaks :)
0 comentarios
  Image Analyst
      
      
 el 25 de Feb. de 2023
        In addition to findpeaks, if you don't have the Signal Processing Toolbox, you can use islocalmax in base MATLAB.
0 comentarios
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
