function signal_filtered = firFilter(N, cutoffFreq, signal, samplingFreq) %{ function signal_filtered = firFilter(N, cutoffFreq, signal, samplingFreq) Ex: signal_filtered = firFilter(30, [5 20], x, 200) Task: Apply an FIR bandpass filter to a signal. Inputs: - N: filter order - cutoffFreq: 2-element vector [low high] for bandpass cutoff (Hz) - signal: input signal to be filtered - samplingFreq: sampling frequency (Hz) Output: - signal_filtered: the filtered output signal Author: Tikea TE Date: 16/04/2025 %} % Normalize the cutoff frequency Wn = cutoffFreq / (samplingFreq / 2); % Normalize to Nyquist % Design the FIR bandpass filter using Hamming window b = fir1(N, Wn, 'bandpass', hamming(N+1)); a = 1; % FIR filter has only numerator % Apply filter signal_filtered = filter(b, a, signal); % Plot frequency response figure; freqz(b, a, 1024, samplingFreq); title('Frequency Response of FIR Filter'); grid on; % Plot impulse response figure; impz(b, a); title('Impulse Response of FIR Filter'); xlabel('Samples (n)'); ylabel('Amplitude'); grid on; end