Хаос (17.05.2018 12:51, просмотров: 1) ответил Dmalx на Я и делаю свертку полученного сигнала и эталона сдвинутого на разные углы. Максимум свертки показывает угол между двумя сигналами. Но мне кажется что амплитуда сигнала должна влиять.
Когда-то решали похожую задачу: Для вычисления фазового сдвига нужно лишь найти два коэффициента в разложении в ряд Фурье:
a = (2/M)*Sum[S(t)*cos(2*Pi*F*t)] и
b = (2/M)*Sum[S(t)*sin(2*Pi*F*t)],
где M - число отсчетов синуса S(t).
Тогда аппроксимация синуса:
S'(t) = a*cos(2*Pi*F*t)+b*sin(2*Pi*F*t).
Зная a и b, можно вычислить сдвиг.
Для грубой оценки точности вычисления фазы
можно воспользоваться известной формулой для
отношения сигнал/шум на выходе АЦП:
SNR = 6.02*N+1.76
С учетом усреднения по M точкам, SNR будет:
SNR = 6.02*N+1.76+10*lg(M/2)
Ошибка при вычислении коэффициентов a и b составит:
ERR(a) = 10^(-(6.02*N+1.76+10*lg(M/2))/20) =
= SQRT(2/M)*10^(-(6.02*N+1.76)/20)
В разложении арктангенса вблизи нуля в ряд Тейлора
можем оставить один член:
Ошибка_Фазы = arctg((a+/-ERR(a))/(b+/-ERR(b ))) =
= (a+/-ERR(a))/(b+/-ERR(b )) = 2*ERR(a) =
= 2*SQRT(2/M)*10^(-(6.02*N+1.76)/20)
Для 10-ти разрядного АЦП:
M = 256 точек и
N = 10 бит АЦП находим:
Ошибка_Фазы = 1.411e-4 [радиан] или
Ошибка_Фазы = 0.0081 [градус].