This is an old revision of the document!


Temă

Această temă are termen limită de predare 22 Noiembrie 15:59, până când va fi încărcată pe curs.upb.ro și va fi prezentată la laborator. Dacă tema va fi încărcată după termenul limită va avea o penalizare de minim 30%, apoi câte 10% pentru fiecare zi peste termenul limită.

Tema valorează 10% din punctajul cursului.

Enunț tema: pdf

Date : Date filtre

Utilizați acest schelete de cod:

tema_matlab.m
% Tema PS 2022
% Autor: Andrei Nicolicioiu
 
clear;
close all;
 
%% detectie: ex 1-2
% TODO: creati semnalele x si h precum este descris in ex. 2
% x = ...
% h = ...
indice = detect(x, h, true);
 
 
%% clasificare: ex 3-5
load('data.mat')
load('filters.mat')
plot_figs = true
 
 
% Pentru a calcula rezultatele mai rapid, putem folosi doar o fractiune din
% fiecare semnal audio. Rezulatele vor fi mai proaste, insa viteza va
% creste
alpha = 1 / 10.0;
b = floor(size(audio_train,1) / 2 - alpha * size(audio_train,1) / 2 + 1);
e = floor(size(audio_train,1) / 2 + alpha * size(audio_train,1) / 2);
audio_train_small = audio_train(b:e,:);
b = floor(size(audio_train,1) / 2 - alpha * size(audio_train,1) / 2 + 1);
e = floor(size(audio_train,1) / 2 + alpha * size(audio_train,1) / 2);
audio_test_small = audio_test(b:e,:);
 
% Dimensiunile datelor ar trebui sa fie:
% audio_train_small: [N, D1]
% audio_test_small: [N, D2]
% labels_train: [D1, 1]
% labels_test: [D2, 1]
 
% calculam vectorii de trasaturi pentru fiecare fisier din datasetul de train si de  test
% get_features primeste toate sunetele din set date intr-o matrice
% de dimensiune Dimensiune_dataset (D) x Numaresults_esantioane (N) si returneaza toate
% trasaturile (features) acestor sunete intr-o matrice de dimensiune Numaresults_sunete (N) x (2*M)
 
% TODO: calculati trasaturile folosind un set de M filtre incarcate
% anterior
% plot_figs == true afisati figurile cerute in tema
 
% filters: [F, M]
% feat_train: [D1, 2M]
% feat_test: [D2, 2M]
 
feat_train = get_features(audio_train_small, fs, filters, plot_figs);
feat_test = get_features(audio_test_small, fs, filters, plot_figs);
 
figure, plot(filters(:,1));
figure, plot(filters(:,2));
 
top_k = 5;
% top_k: scalar (default=5)
% similarity size: [D2, D1]
% prediction size: [D2, 1]
 
[sim_train, pred_train] = knn(labels_train, feat_train, feat_train, top_k);
[sim_test, pred_test] = knn(labels_train, feat_train, feat_test, top_k);
 
% calculam acuratetea pe train si test
acc_test  = mean(pred_test(:) == labels_test(:));
acc_train = mean(pred_train(:) == labels_train(:));
 
sprintf('Accuracy on train: %0.2f', acc_train)
sprintf('Accuracy on test: %0.2f', acc_test)
 
 
% % TODO: verificati calitativ cateva exemple din setul de test. 
% % comparati clasa corecta si clasa presiza cu sunetul auzit
% 
% % alegem random un fisier audio si verificam daca am clasificat corect
% labels_name = {'Dog';'Rooster'; 'Rain' ; 'Waves';'Fire';'Baby';...
%     'Sneezing';'Clock';'Helicopter';'Chainsow'};
% labels_name = string(labels_name);
% 
% r = round(rand() * 100);
% sound(audio_test(:,r),fs);
% sprintf('Clasa corecta: %s', labels_name(labels_test(r)))
% sprintf('Clasa prezisa: %s', labels_name(pred_test(r)))

ps/tema_2022.1668550974.txt.gz · Last modified: 2022/11/16 00:22 by ionut.gorgos
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0