How can I take an average of a signal in order to smooth the data?

2 次查看(过去 30 天)
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. :)

采纳的回答

Kaushik Lakshminarasimhan
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 个评论

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by