MidtermEnd

This commit is contained in:
Lucas Marais 2023-04-20 11:51:02 +02:00
commit 817c15f33a
2 changed files with 100 additions and 0 deletions

99
SignalMidTerm.m Normal file
View File

@ -0,0 +1,99 @@
pkg load signal;
signal = csvread('unknownsignal.csv');
#Create a window for the domain we want to study
domainStart = 100;
domainEnd = 400;
lengthDomain = domainEnd - domainStart +1;
#window the signal
signal_window = zeros(size(signal));
signal_window(domainStart:domainEnd) = signal(domainStart:domainEnd) .* blackman(lengthDomain)';
#Plot the two raw signals
figure;
subplot(1,2,1);
plot(signal);
title("Signal");
xlabel("samples");
ylabel("Amplitude");
subplot(1,2,2);
plot(signal_window);
title("Blackman signal windowing");
xlabel("samples");
ylabel("Gain");
#Apply FFT to both signals.
signalFFT = fft(signal);
signalFFTwindow = fft(signal_window);
fs=600;
F = (0:length(signal)-1)*(fs/length(signal));
figure;
subplot(1,2,1);
plot(F,signalFFT);
title("Signal FFT");
xlabel("Frequency");
ylabel("Gain");
subplot(1,2,2);
plot(F,signalFFTwindow);
title("Blackman signal FFT");
xlabel("Frequency");
ylabel("Gain");
order = 50;
fc = 100; % cutoff frequency
h_fir1 = fir1(order, fc/(fs/2));
n = 4;
Wn = fc/(fs/2);
[b, a] = butter(n, Wn);
% filter the signals
filtered_signal = filter(h_fir1, 1, signal);
filtered_windowed_signal = filter(h_fir1, 1, signal_window);
filtered_signal_butter = filter(b, a, signal);
filtered_windowed_signal_butter = filter(b, a, signal_window);
% plot the signals using subplots
t = linspace(0, length(signal)/fs, length(signal));
t_window = linspace(0, length(signal)/fs, length(signal));
subplot(2,2,1);
plot(t, signal);
title('Original Signal');
subplot(2,2,2);
plot(t_window, signal_window);
title('Windowed Signal');
subplot(2,2,3);
plot(t, filtered_signal);
title('FIR1 Filtered Signal');
subplot(2,2,4);
plot(t_window, filtered_windowed_signal);
title('FIR1 Filtered Windowed Signal');
figure;
subplot(2,2,1);
plot(t, signal);
title('Original Signal');
subplot(2,2,2);
plot(t_window, signal_window);
title('Windowed Signal');
subplot(2,2,3);
plot(t, filtered_signal_butter);
title('Butterworth Filtered Signal');
subplot(2,2,4);
plot(t_window, filtered_windowed_signal_butter);
title('Butterworth Filtered Windowed Signal');

1
unknownsignal.csv Normal file

File diff suppressed because one or more lines are too long