Why my mel filters do not overlap on each other?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
cat0530
am 18 Mär. 2016
Bearbeitet: cat0530
am 21 Mär. 2016
The 26 filters should overlap on each other. Could someone help me with this?
1 Kommentar
Star Strider
am 18 Mär. 2016
I’ve never used or designed MEL filters. I refer you to: Mel Frequency Cepstral Coefficient (MFCC) tutorial since it seems to be a comprehensive discussion. Compare your code with that discussion.
Akzeptierte Antwort
Rick Rosson
am 20 Mär. 2016
Bearbeitet: Rick Rosson
am 21 Mär. 2016
I think the problem is in the second elseif statement:
elseif (k>=f_range(m+1) && k<=f_range(m))
These two sub-conditions are mutually exclusive, so this condition is always false. As a result, the line after this condition, which creates the right half of the triangle, is never executed.
Please try:
elseif (k>f_range(m) && k<=f_range(m+1))
That being said, there are much easier and more efficient ways to create the filter bank in MATLAB, for example:
- logical indexing
- the tripuls function
2 Kommentare
Rick Rosson
am 21 Mär. 2016
You need to create 2 extra points in f_range. So replace the following two lines:
%Need 26 points spaced linearly between minfreq and maxfreq
f_range = linspace(minMel, maxMel, nfilts);
with these two:
%Need 28 points spaced linearly between minfreq and maxfreq
f_range = linspace(minMel, maxMel, nfilts+2);
Weitere Antworten (1)
Rick Rosson
am 20 Mär. 2016
Bearbeitet: Rick Rosson
am 20 Mär. 2016
2 Kommentare
Star Strider
am 20 Mär. 2016
I’m not certain that will work. When I looked up the MEL filters (that are designed to emulate cochlear frequency responses), the pass-bands were intersecting and looked something like: ...XXXXX...
Siehe auch
Kategorien
Mehr zu Feature Extraction finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!