SignalProcessing_Midterms/main.m

65 lines
1.5 KiB
Matlab

%%%%%%%%%%%%%%%%%%
%Signal Processing exam
%
% Task: process and analyse an unknown signal "unknownsignal.csv"
%
% Traglia Nicolas
% nicolas.traglia@ecam.fr
%20/04/2023
%%%%%%%%%%%%%%%%%%
clc;
clear;
SignalRaw = csvread("unknownsignal.csv"); #The signal to process
N = length(SignalRaw); #Length of the signal
Fs = 300; # Hz; the sampling frequency
RoI=[30,40]; #Region of interest, in Hz.
FFTSIGNAL=fft(SignalRaw,N);
power = abs(FFTSIGNAL).^2/N;
if true #Plot raw signal
plot(1:length(SignalRaw), SignalRaw);
title('Raw unknown signal');
xlabel('Time (s)');
ylabel('Amplitude (a.u.)');
endif
if true #Plot raw signal in frequency domain
plot(1:length(power),power);
title('Raw unknown signal');
xlabel('Frequency (Hz)');
ylabel('Amplitude (dB)');
endif
if false #Bandpass filtered signal, Work In Progress (Does not work, returns error filter order N must be a positive integer)
pkg load signal;
BPSignal = butter(power, [RoI(1),RoI(2)]);
plot(1:N, SignalRaw);
title('Raw unknown signal');
xlabel('Time (s)');
ylabel('Amplitude (a.u.)');
subplot(3,1,2);
plot(1:N, BPSignal);
title('Filtered signal');
xlabel('Frequency (Hz)');
ylabel('Amplitude (dB)');
endif
if false #Moving Average filter, Work In Progress
SignaMA = zeros(size(SignalRaw));
A=20;
for i =A:N
SignalWMA(i)=sum(SignalRaw(i-A+1:i))/A; #average
endfor
figure
subplot(3,1,1);
plot(1:N, SignalRaw);
title('Raw unknown signal');
xlabel('Time (s)');
ylabel('Amplitude (a.u.)');
subplot(3,1,2);
plot(1:N, SignalWMA);
title('MAF signal');
xlabel('Time (s)');
ylabel('Amplitude (a.u.)');
endif