%%%%%%%%%%%%%%%%%% %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