[Edit:
Make corections to formulas for a1 and a2 in the lowpass filter.
Many of the equations I entrered with the LaTeX editor look OK when I enter them, but after I submit my answer, they do not display correctly on my monitor. I hope this is not happening to you also. It happens to me with Firefox and with Edge browsers.]
Since you want a 4th order Butterworth bandpass, make two second order Butterworths: low pass at 450 Hz plus high pass at 20 Hz.
In theory, the order (low then high, versus high then low) does not matter. Whether this is true in practice depends on the data and the choice of filters and cutoff frequencies.
x=input, y1=output from filter 1=input to filter 2, y2=output from filter 2
We have two second order digital filters with transfer functions
where the coefficients ak and bk are different for the two filters.
Let fs=sampling rate and T=1/fs=sampling interval.
Lowpass flter
Define fcL=lowpass cutoff frequency (Hz);
=lowpass cutoff frequency (radian/s);
. betaL = tan(wcL*T/2) = tan(pi*fcL/fs) (same equation as above but without LaTeX)
Then, for the 2nd order Butterworth lowpass filter,
,
Define bL=[b0,b1,b2] and aL=[1,a1,a2] for the lowpass filter with the formulas above. Then apply the lowpass filter to signal x by doing
Function filter() is part of standard Matlab - not in a toolbox.
Highpass filter
Define fcH=highpass cutoff frequency (Hz);
=highpass cutoff frequency (radian/s);
Then, for the 2nd order Butterworth highpass filter,
,
Define bH(1:3)=[b0,b1,b2] and aH(1:3)=[1,a1,a2] with the highpass formulas above. Then apply the highpass filter to signal y1 by doing
y2 is the bandpass-filtered signal that you want.
Good luck with your analysis.