Shifting data in time
조회 수: 12 (최근 30일)
이전 댓글 표시

Hello! I have a data set containing several trials as shown in the figure. I now want to take the average of these trials, but as you can see, the trials are shifted, so when I take the average, it is not a good representation. I now want to shift the trials such that their maximum is at the same position so I can compute the average maximum.
Is there anyone with a good suggestion for this?
답변 (3개)
KL
2017년 10월 30일
I suppose you want to synchronize all the maximums, try this in that case,
m = max(temp_data);
[a b c] = find(temp_data==m);
new_data = temp_data;
new_data(:,2) = circshift(new_data(:,2),a(1)-a(2));
new_data(:,3) = circshift(new_data(:,3),a(1)-a(3));
new_data(:,4) = circshift(new_data(:,4),a(1)-a(4));
new_data(:,5) = circshift(new_data(:,5),a(1)-a(5));
plot(new_data)
댓글 수: 4
Piotr Osinski
2019년 2월 7일
Hi, you can use Signal Processing Toolbox (https://de.mathworks.com/help/signal/ug/align-signals-with-different-start-times.html).
At first find highest delay between signals with by itereating through every pair of signals :
delaynm = finddelay(signalN, signalM);
Then allign them to the maximal delayed signal maxDelSignal:
[maxDelSignal, signalN] = alignsignals(maxDelSignal, signalN);
Pad with NaNs or zeros to the signal with maximal size:
signalN(mSaxize) = NaN;
Now you have alligned signals and can simply compute mean value of the signals and find max.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
