<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hello EEGLab users,<br>The filter that eegfilt() creates with its default parameters seems to sometimes introduce a drift into the data. To see this, run the following Matlab code:<br>t=0:.001:2; x=[zeros(size(t(t<1))),ones(size(t(t>=1)))]; figure; plot(t,x,'.-'); y=eegfilt(x,1000,0,10); hold on; plot(t,y,'.-'); legend('original data','filtered data');<br>This creates a step function and then filters it. As you can see, the filter introduces a shift in the value of the data when tracking the non-zero part of the step function. Another way to see how the filtered data drifts away from the original signal is this code:<br>t=0:.001:2; x=t.^2+sin(2*pi*5.*t)+randn(size(t)).*0.1; figure; plot(t,x,'.-'); y=eegfilt(x,1000,0,10); hold on; plot(t,y,'.-'); legend('original data','filtered data');<br>In the latest EEGLab version, the developers note that using the default fir-filter type, firls, to estimate figure parameters is problematic. Therefore, do not use the default firls; use fir1 instead. Indeed, if you try the code below with fir1, there will be no drift:<br>t=0:.001:2; x=[zeros(size(t(t<1))),ones(size(t(t>=1)))]; figure; plot(t,x,'.-'); y=eegfilt(x,1000,0,10,0,0,0,'fir1'); hold on; plot(t,y,'.-');<br>t=0:.001:2; x=t.^2+sin(2*pi*5*t)+randn(size(t)).*0.1; figure; plot(t,x,'.-'); y=eegfilt(x,1000,0,10,0,0,0,'fir1'); hold on; plot(t,y,'.-');<br>Best wishes,<br>Uri Maoz<br>                                        </div></body>
</html>