GitBucket
Pull requests
Issues
Snippets
Sign in
kalle
/
test.m
Fork
0
Created at Thu Oct 18 11:40:12 CEST 2018
Download ZIP
HTTP
Embed
Embed this snippet in your website.
HTTP
Clone with Git using the repository's web address.
Code
Revision
Forks
Pascal Gollor
revised this
on 18 Oct 2018
b09517a
test.m
% @author Pascal Gollor % @date 2018-10-18 % % create two signals with random phase offset and try to reduce the offset % via fft analysis % clear all; clear figures; clc; %% values % samples N = 1000; % signal periods periods = 2; % amplitude signal 1 amp1 = 1; % amplitude signal 2 amp2 = 1.4; %% signal generation Fs = N / periods; T = 1 / Fs; t = 0:T:periods - T; freq = 1; phase_offset = rand(1)*(pi/2); % signal s1 = 2 + amp1 * sin(2* pi * freq * t); s2 = 1 + amp2 * sin(2* pi * freq * t + phase_offset); % noise hi = 0.05; lo = -0.05; n1 = lo + (hi-lo) * rand([1 N]); n2 = lo + (hi-lo) * rand([1 N]); s1 = s1 + n1; s2 = s2 + n2; % true phase ofset phase_offset %% calculation % fft fft_s1 = fft(s1); fft_s2 = fft(s2); % remove dc component offset1 = fft_s1(1) / N; fft_s1(1) = 0; fft_s2(1) = 0; % calculated offset phase_rad = angle(fft_s1(1:end/2)/fft_s2(1:end/2)) % signal shiftig fft_s2_shift = fft_s2 .* exp(-j*t*phase_rad); s2_shift_comp = ifft(fft_s2_shift); s2_phase = angle(s2_shift_comp); s2_phase(s2_phase > 0) = 1; s2_phase(s2_phase < 0) = -1; s2_shift = abs(s2_shift_comp) .* s2_phase + offset1; %% plotting figure(1); plot(t, s1); hold on; plot(t, s2); plot(t, s2_shift); hold off; legend('original signal', 'shifted signal', 'back shifted signal')