MATLAB: Unable to use Low pass filter on experimental data

digitalfilterfilterlowpassMATLAB and Simulink Student Suite

Hi there
I am trying to filter som data but i get the warning: " Unable to use a value of type 'digitalFilter' as an index."
sfilter = Fx';
noise = 0.5*randn(size(tA));
xfilter = noise + sfilter;
figure()
plot(xfilter)
dfilter = designfilt('lowpassfir', 'FilterOrder', 5, 'CutoffFrequency', 11, 'SampleRate', fs);
yfilter = filter(dfilter,xfilter);
plot(yfilter)
Where,
sfilter is a 1 x 59992 row vector
Fx' is a 1 x 59992 row vector
noise is a 1 x 59992 row vector
xfilter is a 1 x 59992 row vector
tA is a 1 x 59992 row vector
I hope you can help

Best Answer

When I substitute some vectors for the missing data, the posted code runs for me without error.
The filter function should take a digitalFilter object.
Do you have a variable called ‘filter’?
To see if you do, run this:
q = which('filter','-all')
if the first result is:
filter is a variable.
You have found the problem. (This is called ‘overshadowing’ a MATLAB function.) Ths solution is to rename the variable.