How to filter my noisy square wave so that i can recover my signal using the Chebyshev Filter
Bandpass filtering won't do what you're after.  If I take a noiseless square wave with the spectrum in red, and design a bandpass filter for it (response in blue):



and then apply this filter to the original (light blue) square wave, then I get the dark blue response.



I suspect that a better approach might be to use a median filter.

If I apply some gaussian noise to the square wave (blue line), and then apply a median filter (orange plot) then the result is below.



These plots were generated in python; I don't have easy access to Matlab. Code below.

from scipy import signal
import math
import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0,20*math.pi,1000)
sq = scipy.signal.square(t)

b, a = signal.cheby1(4, 0.1, [0.01, 0.2], 'bandpass')

plt.rcParams['figure.figsize'] = [20, 10]
plt.figure(1)
w, h = signal.freqz(b, a)
w2, h2 = signal.freqz(sq, 1)
plt.plot(w, abs(h)*600)
plt.plot(w2, abs(h2), color='red')


plt.figure(2)
plt.rcParams['figure.figsize'] = [20, 10]
plt.plot(t,sq)
sq_f = scipy.signal.lfilter(b,a,sq)
plt.plot(t,sq_f,color='blue')

sq_noisy = sq + np.random.normal(0,1,1000)
plt.figure(3)
plt.plot(t,sq_noisy)
sq_noisy_f = scipy.signal.medfilt(sq_noisy,21)
plt.plot(t,sq_noisy_f,color='orange')