fs=8000; % Sampling rate filterOrder=5; % Order of filter % ====== low-pass filter cutOffFreq=1000; [b, a]=butter(filterOrder, cutOffFreq/(fs/2), 'low'); [h, w]=freqz(b, a); subplot(2,2,1); plot(w/pi*fs/2, abs(h), '.-'); xlabel('Freq (Hz)'); title('Freq. response of a low-pass filter'); grid on % ====== high-pass filter cutOffFreq=2000; [b, a]=butter(filterOrder, cutOffFreq/(fs/2), 'high'); [h, w]=freqz(b, a); subplot(2,2,2); plot(w/pi*fs/2, abs(h), '.-'); xlabel('Freq (Hz)'); title('Freq. response of a high-pass filter'); grid on % ====== band-pass filter passBand=[1000, 2000]; [b, a]=butter(filterOrder, passBand/(fs/2)); [h, w]=freqz(b, a); subplot(2,2,3); plot(w/pi*fs/2, abs(h), '.-'); xlabel('Freq (Hz)'); title('Freq. response of a band-pass filter'); grid on % ====== band-stop filter stopBand=[1000, 2000]; [b, a]=butter(filterOrder, stopBand/(fs/2), 'stop'); [h, w]=freqz(b, a); subplot(2,2,4); plot(w/pi*fs/2, abs(h), '.-'); xlabel('Freq (Hz)'); title('Freq. response of a band-stop filter'); grid on