correlation of two signal
조회 수: 12 (최근 30일)
이전 댓글 표시
hello buddies and experts.
need little help.
i am actually correlating two signals. i want to circ shift the signal by (-1.9282e-12) and then find this delay by delay command.
code:
% t=linspace(0,1000,100001) %in ms
xs=randn(1,100001)
grid on
subplot(3,1,1)
plot(t,xs)
title('SIGNAL RECEIVED AT MASTER')
shift_ms = 10;
%SIGNAL RECEIVED AT RECEIVER 1(TIME DELAYING THE DISCRETE SIGNAL)
x1=circshift(xs,shift_ms*.1); %signal received at receiver 1
subplot(3,1,2)
plot(t,x1)
title('SIGNAL RECEIVED AT RECEIVER#1')
[c,lags]=xcorr(xs,x1);
subplot(3,1,3)
plot(lags,c)
title('CORRELATION OF RECEIVER 1 AND PROCESSING UNIT')
[maxval indx]=max(c)
shiftCalc_ms = (length(t)-indx)/10
t21 = finddelay(xs,x1)
output:
댓글 수: 2
채택된 답변
Bjorn Gustavsson
2020년 11월 24일
Why do you want to use circshift? That would put some of your last samples first! That's not the way to go about this.
To do this right you have to calculate the number of samples that corresponds to your requested time-shift, that is you have to take your sampling-frequency and calculate how many samples corresponds to 1.9e-12. If that is a full number of samples then you know how many steps to circular-shif with. BUT: Then you definitely have to crop out that number of samples to avoid including the product between samples from the beginning and end of the time-serieses, how to do that you can rather easily figure out if you take a small toy-array with say 10-15 elements and look at where samples end up after the circ-shifting.
HTH
추가 답변 (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!