Finding peak value and peak arrival time from a time-domain plot and store it into a matrix.
    조회 수: 5 (최근 30일)
  
       이전 댓글 표시
    
I have 360 differential signals to be processed through SVM. How do I extract peak value and peak arrival time from time-domain plot of each signal and store it in a single matrix? Below is my code.
 % load a .mat file
   load ('Defect_Signals_with_Labels.mat');
   fs  = 100000;
   for j = 1:360
       x = SurfaceDifferential(:,j);
       % set time to be in milliseconds
       time = ( 0: length(x)-1) / fs;
       % plot frequency in time domain
       figure(2);
       plot(time, x);
       xlabel('Time (s)');
       ylabel('Magnitude (Gauss)');
       grid on;
   end
댓글 수: 0
채택된 답변
  Sandro Lecci
      
 2018년 5월 18일
        
      편집: Sandro Lecci
      
 2018년 5월 18일
  
      Hi Syed,
are you looking for the max value and its index ?
peakValues = NaN(360, 2); %column 1 is peak value, column 2 is arrival time
   for j = 1:360
       % Extract the time-series data
       x = SurfaceDifferential(:,j);
       % set time to be in milliseconds
       time = ( 0: length(x)-1) / fs;
       %extract max and its location from the timeseries data
       [xMax, xIdx] = max(x);
       peakValues(j,1) = xMax;
       peakValues(j,2) = time(xIdx); %to get the value in milliseconds
       %plot...
   end
best, Sandro
댓글 수: 4
  Guillaume
      
      
 2018년 5월 18일
				Sandro makes some good points in his latest comment.
I just want to point out that the loop in the answer is completely unnecessary and the whole lot can be replaced by just:
[peakvalues, where] = max(SurfaceDifferential);
correspondingtime = time(where);
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

