I am not certain what you want to do.
One approach:
D = load('exp 8b.txt');
t = D(:,1);
s = D(:,2);
figure
plot(t, s)
grid
title('Original Signal')
xlabel('Time')
ylabel('Amplitude')
sm = mean(s);
L = size(D,1);
Ts = mean(diff(t));
Fs = 1/Ts;
Fn = Fs/2;
FTs = fft(s-sm)/L;
Fv = linspace(0, 1, fix(L/2)+1)*Fn;
Iv = 1:numel(Fv);
figure
plot(Fv, abs(FTs(Iv))*2)
grid
title('Original Signal')
xlabel('Frequency')
ylabel('Amplitude')
sdn = wdenoise(s);
figure
plot(t, sdn)
grid
title('Denoised Signal')
xlabel('Time')
ylabel('Amplitude')
Wp = [859 862]/Fn;
Ws = [855 865]/Fn;
Rp = 1;
Rs = 50;
[n,Wp] = ellipord(Wp,Ws,Rp,Rs);
[z,p,k] = ellip(n,Rp,Rs,Wp);
[sos,g] = zp2sos(z,p,k);
figure
freqz(sos, 2^16, Fs)
s_filt = filtfilt(sos, g, s);
figure
plot(t, s_filt)
grid
title('Filtered Signal')
xlabel('Time')
ylabel('Amplitude')
s_filt = filtfilt(sos, g, sdn);
figure
plot(t, s_filt)
grid
title('Filtered Denoised Signal')
xlabel('Time')
ylabel('Amplitude')
Your signal has significant broadband noise, and a wavelet denoising step is the only way to deal with that. See the documentation for wdenoise (R2017b and later releases) for details on the function. There appears to be a frequency peak at about 861 Hz, and the bandpass filter here selectively (and efficiently) filters the region from 859 Hz to 862 Hz.
Expertiment to get the result you want.
Best Answer