Filtered signal does not follow my cut off frequency I filtered my signal with low pass filter butterworth forth order with cutoff frequency of 50 hz. However when I compare the filtered signal with original one in frequency domain, it seems that the cut off frequency started from 25 hz instead of 50. 



this is my matlab code and my data from here



%sampling frequency is 146

[b,aa] = butter(10, 50/146,'low');
data_filtered = filtfilt (b,aa,data);


did i make some mistake ?
did i make some mistake ?


Yes. The cutoff frequency is specified relative to the Nyquist Frequency and not the sample rate

From the documentation


  Wn must be 0.0 &lt; Wn &lt; 1.0, with 1.0 corresponding to half the sample
  rate.


Also: you design a 10th order butterworth and filtfilt() doubles that again to 20. That will give you significant domain "ringing".