выявление фазового сдвига между сигналами

Я создал три одинаковые волны со сдвигом фазы в каждой. Например:

t = 1:10800; % generate time vector
fs = 1; % sampling frequency (seconds)
A = 2; % amplitude
P = 1000; % period (seconds), the time it takes for the signal to repeat itself
f1 = 1/P; % number of cycles per second (i.e. how often the signal repeats itself every second).
y1 = A*sin(2*pi*f1*t); % signal 1
phi = 10; % phase shift
y2 = A*sin(2*pi*f1*t + phi); % signal 2
phi = 15; % phase shift
y3 = A*sin(2*pi*f1*t + phi); % signal 3

YY = [y1',y2',y3'];

plot(t,YY)

Теперь я хотел бы использовать метод для обнаружения этого фазового сдвига между волнами. Смысл этого в том, чтобы я мог в конечном итоге применить метод к реальным данным и определить фазовые сдвиги между сигналами.

До сих пор я думал о вычислении перекрестных спектров между каждой волной и первой волной (т.е. без фазового сдвига):

for i = 1:3;
    [Pxy,Freq] = cpsd(YY(:,1),YY(:,i));
    coP = real(Pxy);
    quadP = imag(Pxy);
    phase(:,i) = atan2(coP,quadP);
end

но я не уверен, имеет ли это смысл.

Кто-нибудь еще делал что-то подобное? Желаемый результат должен показать сдвиг фазы на 10 и 15 для волн 2 и 3 соответственно.

Любой совет будет принят во внимание.

Ответы на вопрос(5)

Ваш ответ на вопрос