function main() %{ function main() Main function to analyze the unknown signal Tasks: - Load signal - Plot raw signal - Perform and plot power spectrum Author: Tikea TE Date: 16/04/2025 %} % ==== Load signal ==== load unknownsignal.mat Fs = 200; % given sampling frequency (Hz) % ==== Plot the raw signal ==== plotRawSignal(X, Fs); % ==== Analyze frequency spectrum ==== [f, power] = frequencySpectrum(X, Fs, 1); % set 1 to plot % ======== Apply a bandpass filter ============== % [filteredSignal, Z, P] = iirFilter(10, [5 20], X, Fs, 1); % ======== Apply FirFilter =============== filteredSignal = firFilter(30, [5 20], X, 200); % for a 30th-order bandpass FIR filter % ============ plot the filtered signal ============ plotFilteredSignal(filteredSignal, Fs); plotRawVsFiltered(X, filteredSignal, Fs); % ==== Power spectrum of the filtered signal ==== [f_filtered, power_filtered] = frequencySpectrum(filteredSignal, Fs, 1); % === Create time vector for windowing === t = (0:length(filteredSignal)-1) / Fs; % === Choose window duration === duration_signal = length(filteredSignal) / Fs; win_duration = 2; % seconds % === Create and apply Hanning window === win_hanning = createtemporalWindow(t, duration_signal, win_duration, Fs, 2); x_hanning = applyTemporalwindow(filteredSignal, t, win_hanning); % === Plot raw vs windowed === figure; plot(t, filteredSignal, 'r'); hold on; plot(t, x_hanning, 'b'); legend('Filtered signal', 'Hanning-windowed'); xlabel('Time (s)'); ylabel('Amplitude'); title('Windowing Effect on Filtered Signal'); grid on; end