65 lines
1.5 KiB
Matlab
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 |