From ff37f20dda3651ddcdce53f046b6e6511cf96482 Mon Sep 17 00:00:00 2001 From: "rio.loann" Date: Thu, 20 Apr 2023 11:31:55 +0200 Subject: [PATCH] final version --- Main.m | 51 ++++++++++++++++++++++++++++++++++++++++---- frequencySpectrum.m | 48 +++++++++++++++++++++++++++++++++++++++++ sound.wav | Bin 0 -> 1244 bytes spectrogram.m | 38 +++++++++++++++++++++++++++++++++ unknownsignal.csv | 1 + 5 files changed, 134 insertions(+), 4 deletions(-) create mode 100644 frequencySpectrum.m create mode 100644 sound.wav create mode 100644 spectrogram.m create mode 100644 unknownsignal.csv diff --git a/Main.m b/Main.m index 47d5a19..e52c8b3 100644 --- a/Main.m +++ b/Main.m @@ -4,12 +4,55 @@ # #Last modified: 02/03/2023 08:28:32 # -# -# -# ################# pkg load signal; +clc; +close all; +clear all; + + +signal = csvread ('unknownsignal.csv'); + +figure; +plot(signal); +title("raw Signal"); +xlabel("time"); +ylabel("Amplitude"); + +% set signal of interest +SStart = 100; +SEnd = 400; + +Fs = 300; + +lenDomain = 1 + (SEnd - SStart); + +windowed_signal= zeros(lenDomain); + +% using blackman , we get the signal of interest +windowed_signal = signal(SStart:SEnd) .* blackman(lenDomain)'; + +figure; +plot(SStart: SEnd, windowed_signal); +title("Blackman signal windowing"); +xlabel("samples"); +ylabel("Amplitude"); + +frequencySpectrum(windowed_signal, Fs, 0); + +%spectrogram(windowed_signal, Fs, 1/Fs, 1000*length(signal)/Fs); + +% filter using filter and butter + +[val, ind] = max(windowed_signal); + +figure; +[b, a] = butter(6, 10/Fs); +s = filter(b, a, 10*log10(windowed_signal/windowed_signal(ind))); +plot(50:300, s(50:300)); + + +audiowrite("sound.wav", signal, Fs); - x = csvread (filename) \ No newline at end of file diff --git a/frequencySpectrum.m b/frequencySpectrum.m new file mode 100644 index 0000000..94617d5 --- /dev/null +++ b/frequencySpectrum.m @@ -0,0 +1,48 @@ +function power = frequencySpectrum(signal, fs) +%%%%%%%%%%%%%%%%%% +%function frequencySpectrum(signal, fs) +% +% Task: Display the power spectrum of a given signal +% +% Input: +% - signal: the input signal to process +% - fs: the sampling rate +% +% Output: +% - power: power spectrum of the signal +% +% +% Guillaume Gibert, guillaume.gibert@ecam.fr +% 25/04/2022 +%%%%%%%%%%%%%%%%%% + +n = length(signal); % number of samples + +y = fft(signal, n);% compute DFT of input signal +power = abs(y).^2/n; % power of the DFT + +[val, ind] = max(power); % find the mx value of DFT and its index + +% plots +figure; + +subplot(1,3,1) % time plot +t=0:1/fs:(n-1)/fs; % time range +plot(t, signal) +xticks(0:0.1*fs:n*fs); +xticklabels(0:0.1:n/fs); +xlabel('Time (s)'); +ylabel('Amplitude (a.u.)'); + +subplot(1,3,2) % linear frequency plot +f = (0:n-1)*(fs/n); % frequency range +plot(f,power, 'b*'); hold on; +plot(f,power, 'r'); +xlabel('Frequency (Hz)') +ylabel('Power (a.u.)') + +subplot(1,3,3) % log frequency plot +plot(f,10*log10(power/power(ind))); +xlabel('Frequency (Hz)') +ylabel('Power (dB)') + diff --git a/sound.wav b/sound.wav new file mode 100644 index 0000000000000000000000000000000000000000..aa44622bb39d3ea79f0b6eabdf134adff608b563 GIT binary patch literal 1244 zcmWNQeQb?q7>Dosd7k$@@98;PRRwF-PA6N9ZbcU=f(>m|v#eAP%q}P?sOx4LRUh|>u$^+Lsl#H&VLb0E_Qx`(J2LE^ z8WGBcFSRT+*tgMtfiH5mJ5S4xEyA;UgY4-G_@A?_?t#X9tC!Vy4Eg*IvDTnF?_E8EH!-)J7Y+5drgLif8b@&-#&qxmahfSv6}YnCI; zeN?pAGh`L7;GJetCzE3x(_JOviTqjSa~)qbf9t#}OO2p0ku|8{^q4(_^XBkiBMoyL zcg$jER6jbvjzC{)yZIB{ayX4DjDS%XgeaO9GOXqFz22&&^O5itR6~v`H+RT+kT0%k zzhZBej63KnnPgR}Um%ay@r|MuSK}I)AS2Z}H4ks_BO=6`aUX1#FWD)wKi{Ju#G}-$2w`cF-=S0F?N?crR{QNvKH%hFqai-Q}D4pQ;pGz!}>91 zwS}JYJmVo&*_+ff$IY-$SZkony2}b3r!m~xCWkp@hFw7lylsuue8vW^C5-9TpX@3fA^V-y^*`p8&(ijiuUTqalXklLc|%k!+4SfF(KIBFaz z#u{Xwh1d84Hb$*faeSv5VwcbgJj&Pd&)Gp*kLT1vdXN6KzQ70iN*t}8t0Xa$Uy?EA zKxom2ikD?IbzrJELp$Ydd5rJI4oZ|sIE&XQkKG7WaEx7No zOQt1kJb#h<;kBvKZV9?DFVC{ z&IijJ>zevoKfxk#p*@A=iFg@pH(-)JnrFySFqO>(W!+P4_#IooW7RllS8-T`ljJQb zV~fQ}{)CET605>mmI?$T^sia1s;51$f!l13It4{s6YVM)=F=8^F?%HQ