Simulate an oscillatory signal with phase resetting
Narrow-band oscillation
The following code simulates a clean oscillating signal with a phase reset at time zero.
clear all close all f = 5; t = (-1000:1:1000)/1000; figure for i=1:10 % repeat 10 times s = nan(size(t)); s(t<0 ) = cos(2*pi*f*t(t<0 ) + 2*pi*rand(1)); % random phase s(t>=0) = cos(2*pi*f*t(t>=0) ); % constant phase s = 0.2*s+i; d(i,:) = s; % remember the signal on each repetition plot(t, s); hold on; end axis auto figure; plot(t, mean(d,1))
Broad-band oscillation
The following code also includes a small “random walk” in the phase, i.e. the signal is a little bit broad-band and over time there is some phase dispersion. At t=0 there is still a phase reset. The phase dispersion causes the average ERF again to disappear some time following the phase reset.
clear all close all f = 5; t = (-2000:1:5000)/1000; figure for i=1:10 % repeat 10 times p = 2*pi*f*t; % linear phase increase p(t<0) = p(t<0) + 2*pi*rand(1); % random phase prior to TMS pulse p = p + cumsum(2*pi*(rand(size(p))-0.5)*0.01); % random walk p = p - p(t==0); s = cos(p); s = 0.2*s+i; d(i,:) = s; % remember the signal on each repetition plot(t, s); hold on; end axis auto figure; plot(t, mean(d,1))