Signal_Final_TikeaTE/firFilter.m

46 lines
1.1 KiB
Matlab

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