How can I take an average of a signal in order to smooth the data?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Inteeskimo
el 11 de Nov. de 2017
Comentada: Neethu Varughese
el 6 de En. de 2018
First I need to divide each cycle up. each cycle needs to be divided as: 0.2 seconds before and 0.4 seconds after the highest y value. That way all the cycles will align.
I am quite new to matlab, so sorry I can't even attempt this. Thank you. :)
0 comentarios
Respuesta aceptada
Kaushik Lakshminarasimhan
el 11 de Nov. de 2017
Let t be the set of time points, y your signal, and fs be the sampling rate.
[~,peaks] = findpeaks(y,'MinPeakHeight',1); % select only the highest peaks
segments = arrayfun(@(x) x-round(0.2*fs):x+round(0.4*fs), peaks,'UniformOutput',false);
y_around_peak = cell2mat(cellfun(@(x) y(x), segments ,'UniformOutput',false)');
plot((-round(0.2*fs):round(0.4*fs))/fs,y_around_peak);
If you get an error in line 2, that probably means you don't have enough samples around either the first or the last peak - in that case, replace peaks in line 2 by peaks(2:end-1).
6 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!