THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Ψηφιακά Φίλτρα => Topic started by: Turambar on April 29, 2006, 14:16:00 pm



Title: Εργασίες 2006. εργασία Γ
Post by: Turambar on April 29, 2006, 14:16:00 pm
Η τρίτη εργασία στο eTHMMY!! Προθεσμία παράδοσης Δευτέρα 8-5-2006.
Κανείς?

Ακόμα χωνεύετε?
ΟΕΕΕΕΟ?
Έτοιμος για δράση ε;
Εγώ σήμερα την έπιασα. Λέω να κάνω μία FIR υλοποίηση. Ακόμα δεν είμαι σίγουρος για τη συχνότητα αποκοπής. Πάντως αν δεν κάνω λάθος η μπάσα νότα είναι η ΛΑ, για να μην κοπεί θέλει συχνότητα αποκοπής μεγαλύτερη του 440Hz.


για λόγους οργάνωσης και ευκολίας πρόσβασης στα απαραίτητα ποστ, προτείνω να  χρησιμοποιήσουμε αυτό το τόπικ για την τρίτη εργασία τι λέτε;


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: BOBoMASTORAS on April 29, 2006, 14:29:07 pm
Συμφωνώ turambar αν και δεν έχω προς το παρόν να γράψω τίποτα για την 3η εργασία :P


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Faidon on April 29, 2006, 20:05:27 pm
Το PC μου κάνει ένα αιώνα να κάνει τις πράξεις με τα 88200 δείγματα του input1.wav... Ίσως να φταίει το ότι η wavread() τα δίνει σε πίνακα στήλη.


Title: Re: Εργασίες 2006. εργασία Γ
Post by: abc on May 01, 2006, 00:38:08 am
Διαψεύστε με αν κανω λάθος αλλά δεν πρόκειται για τόνους μίας συχνότητας αλλά για 2 εύρη συχνοτήτων. Ένα στα χαμηλά και ένα στα υψηλά.

Εξάλλου ακούγεται και με το αυτί ότι οι τόνοι τσουλάνε...

Στο φάσμα φαίνεται πιο καθαρά αυτό που λέω.


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Faidon on May 01, 2006, 02:28:09 am
Βασικά αν κατάλαβα εννοείς ότι δεν υπάρχουν δύο ώσεις στο φάσμα, αλλά δύο ζώνες.
Εγώ για τα πρώτα 8820 δείγματα (τα πρώτα 200msec) έβγαλα το φάσμα που επισυνάπτω. Όταν πάω να το υπολογίσω για όλα τα δείγματα (88200 ή 2sec) το MATLAB αργεί απίστευτα...


Title: Re: Εργασίες 2006. εργασία Γ
Post by: abc on May 01, 2006, 04:06:52 am
Ναι, αυτό εννοώ.

Σε πρώτο στάδιο συμφωνούμε.
Όταν έχω νέα θα επιστρέψω


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: Netgull on May 01, 2006, 12:23:29 pm
Faidon αν χρησιμοποιείς loop του στυλ (που φαντάζομαι θα χρησιμοποιείς κάποια συνέλιξη):

for i=1:N
x(i)=A*B;
end for;

και δεν αρχικοποιείς το x γι αυτό δημιουργείται το πρόβλημα. Σε κάθε επανάληψη του loop το Matlab δεσμεύει μνήμη για την επιπλεόν τιμή που προστίθεται στον x. Αλλά η δυναμική διαχείριση μνήμης του Matlab είναι λίγο για πέταμα...
Δοκίμασε πριν τα loop σου να αρχικοποιείς όλους τους πίνακες πχ
x=zeros(1,N);


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Faidon on May 01, 2006, 14:16:08 pm
Μ' αρέσει ο τρόπος που σκέφτεσαι Netgull, αλλά καθυστερεί χωρίς ο κώδικας να απαιτεί δυναμική δέσμευση μνήμης. Δηλαδή έχω δοσμένα 88200 στοιχεία (της h(n)) και αργεί να τα επεξεργαστεί (για να πάρω την H(ω)).
Όσο για τη συνέλιξη το δοκίμασα και μείωσε σημαντικά το χρόνο.
Ο επεξεργαστής μου είναι Athlon 2600. Είναι δυνατόν να αργεί 1λεπτό να κάνει αυτές τις πράξεις;


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: JAs0n-X on May 01, 2006, 15:40:35 pm
ρε γμτ εμενα μου βγαινει λιγο διαφορετικο...το επισυναπτω
σε γενικες γραμμες ιδιο αλλα το δικο σου μου κανει πιο πολυ σε φασμα. ασε που ο καθετος αξονας μου ειναι λιγο ακυρος.
Φαιδων πως το εκανες με την fft ε?

Η fft μας επιστρεφει το φασμα ως προς την κανονικοποιημενη συχνοτητα?
δλδ ο αξονας παει απο 0 μεχρι 1 ή απο 0 μεχρι π!?


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Faidon on May 01, 2006, 16:28:12 pm
Όπως είπα το προηγούμενο αποτέλεσμα ήταν για τα πρώτα 8820 δείγματα. Άφησα το Η/Υ να το κάνει για όλα τα 88200 δείγματα και έβγαλα το διαγραμμα που επισυνάπτω. Μοιάζει περισσότερο με το δικό σου.
Εγώ δεν το έκανα με την fft. Το δικό μου είναι προσεγγιστικό. Δηλαδή Υπολογίζω 1000 ισαπέχουσες τιμές της H(ω) και της αναπαριστώ. Αν υπολόγιζα περισσότερες τιμές λογικά θα έβγαινε ίδιο με το δικό σου, πιο γεμάτο δηλαδή.
Όσο για τον άξονα, εγώ όπως τα αναπαριστώ είναι από 0 έως 1 αλλά εννοώ 0 έως 2*pi*FS. Και αυτό που επισυνάπτεις έτσι φαίνεται να είναι.


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Faidon on May 03, 2006, 04:35:23 am
Πάντως η fft() είναι τελικά πολύ πολύ πολύ (πολύ πολύ...) πιο γρήγορη από τον τρόπο που το έκανα. Μου έπαιρνε 5 λεπτά να πάρω αποτελέσματα, ενώ με την fft() τα παίρνεις αμέσως. Τώρα και εγώ fft() χρησιμοποιώ και όλα είναι τέλεια.

Τηλεφώνησε και εσύ στο 8011565656 για να αποκτήσεις την fft() σε τιμή ευκαιρίας!!  ^idiot^


Title: Re: Εργασίες 2006. εργασία Γ
Post by: chggr005 on May 08, 2006, 07:57:43 am
Η τρίτη εργασία πήρε και επισήμως παράταση έως 12/5.


Title: Re: Εργασίες 2006. εργασία Γ
Post by: ioanna208 on May 09, 2006, 21:08:23 pm
Για την δεύτερη άσκηση ξέρω ότι δεν είναι δυνατό να απομονώσουμε πλήρως την φωνή από την μουσική...αλλά για τον καλύτερο δυνατό διαχωρισμό τι φίλτρο πρέπει να χρησιμοποιήσουμε?
Με χαμηλοπερατό κάναμε διάφορες δοκιμές για συχνότητα αποκοπής αλλά δεν παρατηρήσαμε κανένα  διαχωρισμό φωνης και μουσικής...
Πρέπει να χρησιμοποιήσουμε μήπως άλλο φίλτρο, ίσως ζωνοπερατό??
Γενικά η φωνή του ανθρώπου αρχίζει από 0 και φτάνει μέχρι 3kHz ή αρχίζει μετά το 0, και γι' αυτό χρειάζεται φίλτρο ζωνοπερατό για να την διαχωρίσουμε...? 


Και κάτι ακόμα το χαμηλοπερατό φίλτρο εμείς το κάναμε με παράθυρο Hamming, υπάρχει περίπτωση να οφείλεται σε αυτό??

Προσπαθήσαμε να το κάνουμε με Kaiser μέσω της fir1:
b=fir1(N,0.06,kaiser(N,a1))

μας έβγαζε το παρακάτω μήνυμα:
??? Error using ==> fir1
The window length must be the same as the filter length.




Title: Απ: Εργασίες 2006. εργασία Γ
Post by: BOBoMASTORAS on May 09, 2006, 21:32:31 pm
Η φωνή γενικά εκτείνεται σε μεγάλο φάσμα. Αν θυμάμαι καλά από την ηλεκτροακουστική είναι από 80 έως 8000Hz. Ο μεταπτυχιακός νομίζω είπε να χρησιμοποιήσουμε φίλτρο ζωνοπερατό από 400 έως 4000. όπως και να χει αυτό είναι ένα πολύ μεγάλο εύρος και θα περιέχει και ένα κομμάτι της μουσικής. μάλλον λίγο δύσκολο να κοπεί η μουσική γιατί μόνο τα ντραμς να σκεφτούμε περιέχουν κρουστικούς θορύβους που εκτείνονται σε όλο το φάσμα.


Title: Re: Εργασίες 2006. εργασία Γ
Post by: chggr005 on May 09, 2006, 22:44:25 pm
Βασικά χωρίς να έχω υπόψη τι είπε ο μεταπτυχιακός, κι εγώ με ζωνοπερατό το έκανα.
Επίσης μετά από πειράματα μου προέκυψε πως ο καλύτερος συνδυασμός είναι με φίλτρο Hamming από 500 - 2500Hz περίπου. Επίσης παρατήρησα ότι η κύρια συνιστώσα της φωνής του τραγουδιστή είναι κοντά στα 550 Hz, οπότε δεν έχει και τόσο νόημα να ανέβεις έως τα 4000Hz.
Ένα πράγμα όμως είναι σίγουρο: Η φωνή θα ακούγεται κάπως περίεργα (μπασμένη!!) αφού της κόβουμε τις υψηλές αρμονικές...


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: JAs0n-X on May 09, 2006, 23:52:53 pm
Η φωνη με βαση την ηλεκτρακουστικη εκτεινεται στο φασμα 300-3000hz.
Τωρα ο τραγουδιστης των Helloween ειναι και λιγο ψιλος αλλα ποσο να παει ο κακομοιρος...
μιση οκταβα πανω?? :P ;D

@ιοαννα: για το παραθυρο kaizer δοκιμασε να βαλεις N+1.Αν θυμαμαι καλα κατι τετοιο ειχε στο ματλαμπ


Title: Re: Εργασίες 2006. εργασία Γ
Post by: ioanna208 on May 10, 2006, 01:02:36 am
Βασικά χωρίς να έχω υπόψη τι είπε ο μεταπτυχιακός, κι εγώ με ζωνοπερατό το έκανα.
Επίσης μετά από πειράματα μου προέκυψε πως ο καλύτερος συνδυασμός είναι με φίλτρο Hamming από 500 - 2500Hz περίπου. Επίσης παρατήρησα ότι η κύρια συνιστώσα της φωνής του τραγουδιστή είναι κοντά στα 550 Hz, οπότε δεν έχει και τόσο νόημα να ανέβεις έως τα 4000Hz.
Ένα πράγμα όμως είναι σίγουρο: Η φωνή θα ακούγεται κάπως περίεργα (μπασμένη!!) αφού της κόβουμε τις υψηλές αρμονικές...

ωραία προσπάθησα και εγώ να το κάνω με ζωνοπερατό από 500-3900 με παράθυρο Hamming αλλά από ότι φαίνεται κάτι χαζό θα κάνω στο matlab και δεν έχω αποτελέσμα επιθυμητό!!!
Αυτό που κάνω είναι :

Βρίσκω θεωρητικά ότι N=286 με βάση τις παραδοχές που έκανα.
μετά χρησιμοποίησα την fir1 για να βρω τους συντελεστές του φίλτρου χτησιμοποιώντας παράθυρο hamming, δηλαδή b=fir1(N,Wn); Στην συνέχεια βρήκα το φιλτραρισμένο σήμα:
y=filter(b,a,sound);
όπου α=1 και sound είναι η πρώτη έξοδος της wavread...
Και τέλος βρίσκω τον μετασχηματισμό fourier της y¨
Υ=fft(y)....
H διαδικασία είναι σωστή??



Το πρόβλημά μου είναι στην fir1 το όρισμα Wn πως ακριβώς το βρίσκω.
Ξέρω ότι είναι πίνακας με δύο στοιχεία και παίρνει τιμές από 0 εως 1 όπου το 1 αντιστοιχεί στην Nyquist...
Tα δύο αυτά στοιχεία σχετίζονται με τις συχνότητες 500 και 3900 που θεώρησα για το ζωνοπερατό, σωστά?
Η Nyquist είναι μικρότερη από 44100...Άρα κάνω μια ανάλογία :
44100  500
1          x1?
και
44100   3900
1          x2?
και Wn=[x1,x2]??
Δεν βγαίνει όμως καθόλου καλό αποτέλεσμα...
Που κάνω λάθος??


Title: Re: Εργασίες 2006. εργασία Γ
Post by: chggr005 on May 10, 2006, 11:20:07 am
Απ' ότι κατάλαβα Ιωάννα χρησιμοποιείς πάρα πολύ τις συναρτήσεις του Matlab και κάπου το χάνεις. Δοκίμασε να το κάνεις διαφορετικά όπως θα σου περιγράψω παρακάτω:

1) Το Ν σου είναι πάρα πολύ μεγάλο. Κανένας απ' όσους συναδέλφους ρώτησα δεν έβαλε τόσο μεγάλο Ν. Δοκίμασε να βάλεις Ν=50.

2) Εάν θεωρήσουμε ότι Ω = 2πf/FS όπου FS συχνότητα δειγματοληψίας (στην περίπτωσή μας 44100) τότε από την θεωρία ξέρουμε ότι οι συντελεστές ενός ζωνοπερατού φίλτρου δίνονται από τους τύπους:
h(i) = (sin(n*Ω2) - sin(n*Ω1))/nπ για n διάφορο του μηδενός
h(0) = (Ω2 - Ω1)/π για n=0

Δοκίμασε μέσω ενός for loop να υπολογίσεις τους συντελεστές αυτούς για διάφορες συχνότητες αποκοπής Ω1 και Ω2. Αφού τους υπολογίσεις, τους πολλαπλασιάζεις με τους συντελεστές του παραθύρου και σχεδόν τελείωσες.
Μετά το μόνο που έχεις να κανεις είναι να εφαρμόσεις το φίλτρο αυτό στο σήμα σου. Το νέο φιλτραρισμένο σήμα θα το αποθηκεύσεις σε έναν καινούργιο πίνακα και στην συνέχεια με την βοήθεια της fft θα απεικονίσεις το φάσμα του. Επίσης, βασιζόμενη σε όσα κάναμε στην προηγούμενη εργασία, μπορείς να βρεις και το διάγραμμα της χαρακτηριστικής του φίλτρου.

Ελπίζω να έλυσα μερικές από τις απορίες σου...


Title: Re: Εργασίες 2006. εργασία Γ
Post by: ioanna208 on May 10, 2006, 15:27:46 pm
1) Το Ν σου είναι πάρα πολύ μεγάλο. Κανένας απ' όσους συναδέλφους ρώτησα δεν έβαλε τόσο μεγάλο Ν. Δοκίμασε να βάλεις Ν=50.

Το Ν=50 που λες ότι έβαλες...Το υπολόγισες κάπως θεωρητικά ή απλά ύστερα από δοκιμές στον κώδικα είδες   ότι αυτή η τιμή ήταν καλή.?
Προσπαθώ να το κάνω θεωρητικά με βάση τα βήματα σχεδίασης που μας έκανε αυτός στο μάθημα (16/03), δηλαδή ορίζοντας τιμές για την απόσβεση στην ζώνη αποκοπής, κυμάτωση στην ζώνη διέλευσης, εύρος στην ζώνη μετάβασης, κ.τ.λ.. Κολλάω στο "ωs" που πρέπει να βάλουμε στην ανισότητα N=>(ωs*D)/Bt+1..
Ποια είναι η συχνότητα δειγματοληψίας του φίλτρου, είναι 44100 όπως και του input2, ή θεωρούμε κάτι άλλο??


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Johnny English on May 10, 2006, 15:35:18 pm
Low pass φίλτρο είναι για να απομονώσεις τη φωνή του Καρρά!  :D

Το συγκεκριμένο θέλει band pass, αλλά κόψε αρκετά πιο ψηλά από τα 4000Hz. Ο τύπος ακούγεται μέχρι τα 11000Hz!!! (Για τον συγκεκριμένο θα μπορούσες να πάρεις και High-Pass!). Προσπάθησε να πετύχεις μεγάλη απόσβεση στα μπάσα (χαμηλές συχνότητες).


Title: Re: Εργασίες 2006. εργασία Γ
Post by: ioanna208 on May 11, 2006, 00:31:06 am
1) Το Ν σου είναι πάρα πολύ μεγάλο. Κανένας απ' όσους συναδέλφους ρώτησα δεν έβαλε τόσο μεγάλο Ν. Δοκίμασε να βάλεις Ν=50.

Το Ν=50 που λες ότι έβαλες...Το υπολόγισες κάπως θεωρητικά ή απλά ύστερα από δοκιμές στον κώδικα είδες   ότι αυτή η τιμή ήταν καλή.?
Προσπαθώ να το κάνω θεωρητικά με βάση τα βήματα σχεδίασης που μας έκανε αυτός στο μάθημα (16/03), δηλαδή ορίζοντας τιμές για την απόσβεση στην ζώνη αποκοπής, κυμάτωση στην ζώνη διέλευσης, εύρος στην ζώνη μετάβασης, κ.τ.λ.. Κολλάω στο "ωs" που πρέπει να βάλουμε στην ανισότητα N=>(ωs*D)/Bt+1..
Ποια είναι η συχνότητα δειγματοληψίας του φίλτρου, είναι 44100 όπως και του input2, ή θεωρούμε κάτι άλλο??


Title: Re: Εργασίες 2006. εργασία Γ
Post by: chggr005 on May 11, 2006, 00:43:18 am
Εγώ έβαλα Ν=50 πειραματικά, μετά από αρκετές δοκιμές. Δεν το υπολόγισα βάσει κάποιου τύπου. Η συχνότητα δειγματοληψίας είναι τα 44100 σίγουρα.

Papados, εγώ βρήκα ότι ναι μεν το φάσμα της φωνής του τραγουδιστή εκτείνεται σε πολύ υψηλές συχνότητες, αλλά η βασική συνιστώσα βρίσκεται χαμηλά, κοντά στα 500HZ. Οπότε εάν κόψεις στα 600Hz, τότε θα έχει κόψει ουσιαστικά την συνιστώσα αυτήν και δεν θα ακούγεται ο τραγουδιστής...


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: marauber on May 11, 2006, 00:52:38 am
Πάντως όσο αυξάνουμε το Ν τόσο προσεγγίζει το φίλτρο περισσότερο το ιδανικό ζωνοπερατό. Εγώ έβαλα Ν=1000 για το οποίο το φίλτρο κόβει πολύ απότομα. Eφόσον δεν έχουμε περιορισμό νομίζω ότι είναι καλύτερη επιλογή. Το σχεδίασα με το Filter Design and Analysis Τοοl του Matlab. Εφόσον είπε ότι κάθε σωστή λύση είναι αποδεκτή, θα το αποδεχτεί και αυτό, σωστά;


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Johnny English on May 11, 2006, 01:06:33 am
Εγώ έβαλα Ν=50 πειραματικά, μετά από αρκετές δοκιμές. Δεν το υπολόγισα βάσει κάποιου τύπου. Η συχνότητα δειγματοληψίας είναι τα 44100 σίγουρα.

Papados, εγώ βρήκα ότι ναι μεν το φάσμα της φωνής του τραγουδιστή εκτείνεται σε πολύ υψηλές συχνότητες, αλλά η βασική συνιστώσα βρίσκεται χαμηλά, κοντά στα 500HZ. Οπότε εάν κόψεις στα 600Hz, τότε θα έχει κόψει ουσιαστικά την συνιστώσα αυτήν και δεν θα ακούγεται ο τραγουδιστής...

Ποιος είπε ότι έκοψα στα 600Hz?  ^nono^  ^confused^ Κατά τα άλλα, μια χαρά τα λες...


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: JAs0n-X on May 11, 2006, 01:18:24 am
Πάντως όσο αυξάνουμε το Ν τόσο προσεγγίζει το φίλτρο περισσότερο το ιδανικό ζωνοπερατό. Εγώ έβαλα Ν=1000 για το οποίο το φίλτρο κόβει πολύ απότομα. Eφόσον δεν έχουμε περιορισμό νομίζω ότι είναι καλύτερη επιλογή. Το σχεδίασα με το Filter Design and Analysis Τοοl του Matlab. Εφόσον είπε ότι κάθε σωστή λύση είναι αποδεκτή, θα το αποδεχτεί και αυτό, σωστά;

Θα το αποδεχθει λογικα αν και αφου δουλεψες με το tool τουλαχιστον προσπαθησε να γραψεις τον κωδικα που σου ανοιγει το tool και κανει import τα στοιχεια. Ψαξε στο Help.

Οσο για το Ν εννοειται βαζουμε οτι θελουμε αρκει να εχουμε το εποθυμητο αποτελεσμα αλλα σκεπτομενοι παντα οτι το φιλτρο θα τρεξει σε ενα DSP με πιθανως περιορισμενη μνημη οχι σε ΑΤΗLON 64αρι με 1giga RAM! :P
Οσο μεγαλυτερο Ν βαζουμε τοσα περισσοτερα δειγματα απαιτουμε να αποθηκευονται!


Title: Re: Εργασίες 2006. εργασία Γ
Post by: chggr005 on May 11, 2006, 01:31:09 am
Ναι ρε παιδιά, δίκιο έχει ο jasonX
Μπορείς να βάλεις όσο μεγάλο Ν θέλεις, αλλά στην πράξη σίγουρα δεν θα δουλέψει. Ιδίως όταν θέλεις να κάνεις Real Time επεξεργασία σήματος...
Οπότε εγώ θεώρησα ότι Ν=50 είναι μία καλή και λογική επιλογή...


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: marauber on May 11, 2006, 02:12:36 am
Θα το αποδεχθει λογικα αν και αφου δουλεψες με το tool τουλαχιστον προσπαθησε να γραψεις τον κωδικα που σου ανοιγει το tool και κανει import τα στοιχεια. Ψαξε στο Help.

Δυστυχώς έχω εγκατεστημένο matlab χωρίς το documentation, οπότε το help δεν παίζει. Πάντως το tool δεν δημιουργεί κανενός είδους κώδικα, παρά μόνο τα δείγματα του φίλτρου, τα οποία γίνονται export στο workspace του matlab. Έψαξα παντού και δε βρήκα κάτι σχετικό με δημιουργία κώδικα. Οτιδήποτε σχετικό ξέρεις...

Οσο για το Ν εννοειται βαζουμε οτι θελουμε αρκει να εχουμε το εποθυμητο αποτελεσμα αλλα σκεπτομενοι παντα οτι το φιλτρο θα τρεξει σε ενα DSP με πιθανως περιορισμενη μνημη οχι σε ΑΤΗLON 64αρι με 1giga RAM! :P
Οσο μεγαλυτερο Ν βαζουμε τοσα περισσοτερα δειγματα απαιτουμε να αποθηκευονται!

Ναι όντως αυτό δεν το είχα σκεφτεί. Βασικά οδηγήθηκα σε μεγάλο Ν επειδή με μικρό η χαρακτηριστική του φίλτρου δε μου φαινόταν ικανοποιητική. Από την άλλη βέβαια μπορεί να μην έχει καθόλου διαφορά στο αυτί.


Και κάτι ακόμα. Σχεδίασα το φάσμα του input2.wav κάνοντας διαδοχικά fft και abs. Ο fft μας βγάζει όμως ένα φάσμα που είναι συμμετρικό ως προς το 0. Για να πιάσει το σήμα την περιοχή (0-22ΚΗz) θα χρειαστεί να κάνουμε ένα fftshift. Τότε όμως π.χ. η συχνότητα 11KHz-500Ηz θα έχει την ίδια ένταση με τη συχνότητα 11ΚΗz+500Ηz! Είναι αυτό λογικό; Γιατί σε όλους τους players ο spectrum analyzer βγάζει σαν εικόνα ένα σήμα που δεν είναι συμμετρικό! Και λογικά να το σκεφτεί κανείς, δεν είναι δυνατόν μια χαμηλή συχνότητα να έχει υποχρεωτικά την ίδια ένταση με μια υψηλή! Αφού από διαφορετικές πηγές παράγεται η καθεμία! Ελπίζω να καταλαβαίνετε την απορία μου :-\...

Όποιος ξέρει κάτι σχετικό θα τον παρακαλούσα να με διαφωτίσει...


Title: Re: Εργασίες 2006. εργασία Γ
Post by: MIMIRU on May 11, 2006, 17:16:07 pm
 ΝΑ ΚΑΝΩ ΜΙΑ ΑΛΛΗ ΕΡΩΤΗΣΗ;  ΕΓΩ ΕΧΩ ΑΛΛΟ ΠΡΟΒΛΗΜΑ..ΠΩΣ ΒΡΙΣΚΟΥΜΕ ΚΑΝΟΝΙΚΟΠΟΙΗΜΕΝΗ ΣΥΧΝΟΤΗΤΑ;ΑΝ ΓΙΑ ΠΑΡΑΔΕΙΓΜΑ ΧΡΗΣΙΜΟΠΟΙΗΣΩ ΠΑΡΑΘΥΡΟ HAMMING ΓΙΑ  Wn ΜΠΟΡΩ ΝΑ ΒΑΛΩ  2*pi*f/44100? ΜΙΑ ΔΙΑΙΡΕΣΗ ΜΕ ΤΗΝ ΣΥΧΝΟΤΗΤΑ ΔΕΙΓΜΑΤΟΛΗΨΙΑΣ ΑΡΚΕΙ?


Title: Re: Εργασίες 2006. εργασία Γ
Post by: abc on May 11, 2006, 19:47:26 pm
Οπότε εάν κόψεις στα 600Hz, τότε θα έχει κόψει ουσιαστικά την συνιστώσα αυτήν και δεν θα ακούγεται ο τραγουδιστής...

Για κάποιους που μπορεί να μην το πρόσεξαν, σαν και μένα, ζητάει να αποκοπεί η μουσική, και να μείνει η φωνή. Όχι το ανίθετο.
 Απλά το υπενθυμίζω.


Title: Re: Εργασίες 2006. εργασία Γ
Post by: abc on May 12, 2006, 00:13:16 am
ΝΑ ΚΑΝΩ ΜΙΑ ΑΛΛΗ ΕΡΩΤΗΣΗ;  ΕΓΩ ΕΧΩ ΑΛΛΟ ΠΡΟΒΛΗΜΑ..ΠΩΣ ΒΡΙΣΚΟΥΜΕ ΚΑΝΟΝΙΚΟΠΟΙΗΜΕΝΗ ΣΥΧΝΟΤΗΤΑ;ΑΝ ΓΙΑ ΠΑΡΑΔΕΙΓΜΑ ΧΡΗΣΙΜΟΠΟΙΗΣΩ ΠΑΡΑΘΥΡΟ HAMMING ΓΙΑ  Wn ΜΠΟΡΩ ΝΑ ΒΑΛΩ  2*pi*f/44100? ΜΙΑ ΔΙΑΙΡΕΣΗ ΜΕ ΤΗΝ ΣΥΧΝΟΤΗΤΑ ΔΕΙΓΜΑΤΟΛΗΨΙΑΣ ΑΡΚΕΙ?


Wn is a number between 0 and 1, where 1 corresponds to the Nyquist frequency.
Nyquist frequency = One-half the sampling frequency. Some toolbox functions normalize this value to 1.

Δηλαδή όλα είναι κανονικοποιημένα ως προς το μισό της συχνότητας δειγματοληψίας.

Για τυχαίο f:
2*pi*f/22050


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: BOBoMASTORAS on May 12, 2006, 02:35:16 am
Και κάτι ακόμα. Σχεδίασα το φάσμα του input2.wav κάνοντας διαδοχικά fft και abs. Ο fft μας βγάζει όμως ένα φάσμα που είναι συμμετρικό ως προς το 0. Για να πιάσει το σήμα την περιοχή (0-22ΚΗz) θα χρειαστεί να κάνουμε ένα fftshift. Τότε όμως π.χ. η συχνότητα 11KHz-500Ηz θα έχει την ίδια ένταση με τη συχνότητα 11ΚΗz+500Ηz! Είναι αυτό λογικό; Γιατί σε όλους τους players ο spectrum analyzer βγάζει σαν εικόνα ένα σήμα που δεν είναι συμμετρικό! Και λογικά να το σκεφτεί κανείς, δεν είναι δυνατόν μια χαμηλή συχνότητα να έχει υποχρεωτικά την ίδια ένταση με μια υψηλή! Αφού από διαφορετικές πηγές παράγεται η καθεμία! Ελπίζω να καταλαβαίνετε την απορία μου :-\...

Όποιος ξέρει κάτι σχετικό θα τον παρακαλούσα να με διαφωτίσει...

όταν κάνεις fft ουσιαστικά βλέπεις τις θετικές αρμονικές. Αυτό που βλέπεις και σου φαίνεται συμμετρικό είναι απλά η επέκταση του σήματος για να είναι περιοδικό που κάνει η fft. οπότε με fft η συχνότητα 0 αντιστοιχεί στο δείγμα 1. Κάνοντας fftshift ουσιαστικά οι συχνοτητες που είναι πάνω από FS/2 πάνε πίσω από τη συχνότητα μηδέν κατοπτρικά και πλέον το πρώτο δείγμα του αντιστοιχεί στη συχνότητα -Fs/2 και το τελευταίο στην fs/2. δηλαδή όντως είναι κεντραρισμένο το φάσμα και αυτό γίνεται για καλύτερη εποπτία.

Αυτό που λές για τους spectrum analyzer μάλλον συμβαίνει δίοτι κάνουν fourier για ήχο που είναι πραγματικό σήμα όπότε ο fourier έιναι άρτιος και δεν έχει νόημα να δείχνουν τις αρνητικές συχνόητες αφού είναι ίδιες. Αντίθετα η fft του matlab κάνει fourier και σε μιγαδικά σήματα οπότε εμφανίζει όλο το φάσμα.

ελπίζω να καταλάβατε τι ήθελα να πω γιατι η ώρα δεν είναι η καλύτερη...... :D :D :D :D


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: marauber on May 12, 2006, 02:52:06 am
Μάλιστα. Δηλαδή αν κατάλαβα καλά, για να δούμε το σήμα όπως πραγματικά είναι (δηλαδή στο 0 να αντιστοιχεί όντως η συχνότητα 0 κ.ο.κ.) πρέπει να πάρουμε μόνο το πρώτο από τα δύο ίδια κομματάκια του fft. Σωστά; Τότε όμως πως γίνεται το σήμα μας να φαίνεται ότι έχει συχνότητες πολύ πάνω από τα 22KHz; (αυτό που έγραψα για την περιοχή 0-22KΗz στο προηγούμενο μήνυμα είναι άκυρο).
Σίγουρα η ένταση τους δεν είναι τόσο ισχυρή όσο των πρώτων αλλά και πάλι μου φαίνεται σημαντική. Στο αυτί δεν ακούγονται βέβαια αλλά η σπατάλη χώρου πρέπει να είναι σημαντική.


Title: Απ: Εργασίες 2006. εργασία Γ
Post by: BOBoMASTORAS on May 12, 2006, 02:55:57 am
βασικά εγώ έκανα

samples=wavread...

H=fft(samples)
και μετά plot(abs(fftshift(H)))

ενώ από κάνω είχα βάλει κλίμακα από -22.05 έως 22,05 KHz


Title: Re: Εργασίες 2006. εργασία Γ
Post by: abc on May 12, 2006, 04:16:49 am
βασικά εγώ έκανα

samples=wavread...

H=fft(samples)
και μετά plot(abs(fftshift(H)))

ενώ από κάνω είχα βάλει κλίμακα από -22.05 έως 22,05 KHz

Για όσους θέλουν μόνο τα θετικά, κρατήστε μόνο τα στοιχεία του πίνακα που είναι από τη μέση και μετά. Έτσι θα λυθεί και η απορία του Μαραού Μπερέ

Θα βλέπεις μόνο τα θετικά και θα'σαι ήσυχος.

Δλδ:

samples=wavread...

H = fftshift(fft(samples));
H = H(length(H)/2:length(H)-1);
plot(abs(H));

Τι λέει καλέ;
Το'χω?

Αυτή η φωνή του των Helloween σφυρίζει μέσα μου.


Title: Re: Εργασίες 2006. εργασία Γ
Post by: Turambar on May 12, 2006, 10:24:56 am
      EAGLE FLY FREE
      Music & Lyrics: Weikath

      People are in a big confusion
      They don't like their constitutions
      Everyday they draw conclusions
      And they're still prepared for war

      Some can say what's ineffective
      Some make up themselves atractive
      Build up things they call protective
      Well you life seems quite bizarre

      In the sky a migthy eagle
      Doesn't care 'bout what's illegal
      On its wings the rainbow's light
      It's flying to eternity

      Eagle fly free
      Let people see

      Just make it your own way
      Leave time behind
      Follow thw sign
      Together we'll fly someday

      Hey, we think so supersonic
      And we made our bombs atomic
      Or the better quite neutronic
      But the poor don't see a dime

      Nowadays the air's polluted
      Ancient people persecuted
      That's what mankind contributed
      To create a better time

      In the sky a migthy eagle
      Doesn't care 'bout what's illegal
      On its wings the rainbow's light
      It's flying to eternity

      Eagle fly free
      Let people see

      Just make it your own way
      Leave time behind
      Follow the sign
      Together we'll fly someday
      Together we'll fly someday
      Forever we'll fly
      Together we'll fly
      Forever we'll fly someday




Title: Re: Εργασίες 2006. εργασία Γ
Post by: elisabeth on May 12, 2006, 21:17:28 pm
ΝΑ ΚΑΝΩ ΜΙΑ ΑΛΛΗ ΕΡΩΤΗΣΗ;  ΕΓΩ ΕΧΩ ΑΛΛΟ ΠΡΟΒΛΗΜΑ..ΠΩΣ ΒΡΙΣΚΟΥΜΕ ΚΑΝΟΝΙΚΟΠΟΙΗΜΕΝΗ ΣΥΧΝΟΤΗΤΑ;ΑΝ ΓΙΑ ΠΑΡΑΔΕΙΓΜΑ ΧΡΗΣΙΜΟΠΟΙΗΣΩ ΠΑΡΑΘΥΡΟ HAMMING ΓΙΑ  Wn ΜΠΟΡΩ ΝΑ ΒΑΛΩ  2*pi*f/44100? ΜΙΑ ΔΙΑΙΡΕΣΗ ΜΕ ΤΗΝ ΣΥΧΝΟΤΗΤΑ ΔΕΙΓΜΑΤΟΛΗΨΙΑΣ ΑΡΚΕΙ?


Wn is a number between 0 and 1, where 1 corresponds to the Nyquist frequency.
Nyquist frequency = One-half the sampling frequency. Some toolbox functions normalize this value to 1.

Δηλαδή όλα είναι κανονικοποιημένα ως προς το μισό της συχνότητας δειγματοληψίας.

Για τυχαίο f:
2*pi*f/22050



All of the filter design functions operate with normalized frequencies, so they do not require the system sampling rate as an extra input argument. This toolbox uses the convention that unit frequency is the Nyquist frequency, defined as half the sampling frequency. The normalized frequency, therefore, is always in the interval 0  f  1. For a system with a 1000 Hz sampling frequency, 300 Hz is 300/500 = 0.6. To convert normalized frequency to angular frequency around the unit circle, multiply by . To convert normalized frequency back to hertz, multiply by half the sample frequency.

normalized cutoff frequency Wn

άρα σύμφωνα με αυτά δεν πρέπει να είναι Wn=fc/22050?
άσε που  το δοκίμασα με 2*pi*f/22050 και έχει συχνότητα αποκοπής γύρω στα 500 hz ενώ απο το φάσμα φαίνεται ότι θα έπρεπε να είναι 2000-2500 περίπου


Title: Re: Εργασίες 2006. εργασία Γ
Post by: abc on May 13, 2006, 01:13:18 am
άρα σύμφωνα με αυτά δεν πρέπει να είναι Wn=fc/22050?
άσε που  το δοκίμασα με 2*pi*f/22050 και έχει συχνότητα αποκοπής γύρω στα 500 hz ενώ απο το φάσμα φαίνεται ότι θα έπρεπε να είναι 2000-2500 περίπου

Άσε Ελίζαμπεθ.

Μέγκα πατάτα, στον παρονομαστή ξέχασα να μετατρέψω το ω σε f.
Θα είναι δλδ:

w=2*pi*f/(pi*fs)=2*f/fs

Επομένως, για fc = 2000 Hz
ωc = .09

Συγγνώμη αν έκαψα κανέναν. ^crazy^