identifying phase shift between signals

前端 未结 6 2082
暗喜
暗喜 2020-12-23 14:50

I have generated three identical waves with a phase shift in each. For example:

t = 1:10800; % generate time vector
fs = 1; % sampling frequency (seconds)
A          


        
6条回答
  •  清歌不尽
    2020-12-23 15:47

    Here is the little modification of your code: phi = 10 is actually in degree, then in sine function, phase information is mostly expressed in radian,so you need to change deg2rad(phi) as following:

    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 = deg2rad(10); % phase shift 
    y2 = A*sin(2*pi*f1*t + phi); % signal 2
    phi = deg2rad(15); % phase shift
    y3 = A*sin(2*pi*f1*t + phi); % signal 3
    
    YY = [y1',y2',y3'];
    
    plot(t,YY)
    

    then using frequency domain method as mentioned chipaudette

    fft_y1 = fft(y1);
    fft_y2 = fft(y2);
    phase_rad = angle(fft_y1(1:end/2)/fft_y2(1:end/2));
    phase_deg = rad2deg(angle(fft_y1(1:end/2)/fft_y2(1:end/2)));
    

    now this will give you a phase shift estimate with error = +-0.2145

提交回复
热议问题