ntua-cvsp-lab / DSP_LabSupport

Here the students of the 2019-2020 DSP course can submit questions regarding the course to the teaching assistants.
7 stars 3 forks source link

[Lab2] Μεγάλο χρονικό κόστος για τη δημιουργία του πίνακα mxd #53

Open chrisdim opened 4 years ago

chrisdim commented 4 years ago

Καλησπέρα, Έχοντας τελειώσει με το μέρος 2 της εργαστηριακής μου έχουν προκύψει κάποια θεματάκια. Αρχικά, όταν τρέχω το πρόγραμμα του μέρους 2 αυτό αργεί, ωστόσο μετά από κάποιο εύλογο χρονικό διάστημα μου δίνει τις γραφικές παραστάσεις που θέλω και για τα τρία σήματα (accx, gyrx, hrm). Για την υλοποίηση του χρησιμοποίησα τρισδιάστατο πίνακα με διαστάσεις (αριθμός παραθύρων)x(πλήθος κεντρικών συχνοτήτων fc)x(μέγεθος του σήματος). Κάθε φορά που καλούμαι να εκτελέσω κάποιο βήμα του αλγορίθμου, χρειάζεται να προσπελάσω τον εν λόγω πίνακα με δύο εμφωλευμένα for loops, κάτι το οποίο, γνωρίζουμε και από άλλα μαθήματα, ότι είναι απαγορευτικό από άποψη πολυπλοκότητας. Όπως και να έχει, μου βγάζει τα τελικά αποτελέσματα. Όταν όμως πάω να φτιάξω τον πίνακα 40x56 διαστάσεων στο ερώτημα 3.1 ακολουθώντας την ίδια διαδικασία με το μέρος 2, το πρόγραμμα μου αργεί αφάνταστα πολύ και δεν τερματίζει ποτέ. Τι μπορώ να κάνω, ώστε να βελτιώσω τον χρόνο του προγράμματος μου; Ευχαριστώ, Χρήστος.

chrisdim commented 4 years ago

Επισυνάπτω μια από τις τελικές γραφικές μου παραστάσεις για του λόγου το αληθές, σε περίπτωση που ολόκληρος ο αλγόριθμος που εκτελώ είναι λάθος και το πρόβλημα έγκειται κάπου αλλού. (Αν κάτι τέτοιο απαγορεύεται, πείτε μου να διαγράψω αυτό το σχόλιο.) Screenshot_18

cgaroufis commented 4 years ago

Καλησπέρα,

Δεν είναι απαραίτητο να χρησιμοποιείς έναν 3d array (ο οποίος με γρήγορες πράξεις βγαίνει να έχει ~10^7 στοιχεία, όχι ακριβώς λίγα), καθώς (από τη στιγμή που χρησιμοποιείς ούτως ή άλλως ένα διπλό for loop - ένα για τα frames του σήματος και ένα για τα επιμέρους φίλτρα Gabor) μπορείς, για κάθε frame, να κρατάς σε έναν πίνακα num_filters x win_length τις ενέργειες Teager-Kaiser ανά ζώνη συχνοτήτων, να υπολογίζεις από αυτόν τις μέσες ενέργειες ανά φίλτρο, και να κάνεις append τη μέγιστη από αυτές σε ένα μονοδιάστατο πίνακα (μήκους num_frames).

Σχετικά με το runtime παντως, στο μέρος 3 θα πρέπει να αναμένετε (ανάλογα και με τις προδιαγραφές του υπολογιστή σας) το feature extraction να διαρκέσει μέχρι και 5-10min. (Μπορείτε για επισκόπηση της προόδου του feature extraction να εκτυπώνετε πχ το όνομα του εκάστοτε υπό επεξεργασία αρχείου)

Καλή συνέχεια, Χρήστος