61 lines
1.6 KiB
Matlab
61 lines
1.6 KiB
Matlab
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
|