Digital System Processing (Audio Processing)
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Lina Ngoopos
am 9 Dez. 2020
Kommentiert: Lina Ngoopos
am 9 Dez. 2020
I'm working on project to find the piano notes of a song. From the time domain graph, I was able to find the correct frequency where the note is present. I used: [S,F,T] = spectrogram (y, 512 , [] , 512, fs); to get the frequency of my song. But the size of the matrix S is too big and I cannot find the correcr frequency row. Can someone please help me understand how to get the correct row of frequency knowing the time?
Thanks
2 Kommentare
Akzeptierte Antwort
Elimelech Schreiber
am 9 Dez. 2020
Bearbeitet: Elimelech Schreiber
am 9 Dez. 2020
If you have a specific time, then you should probably find the maximum frequency at that time, in the matrix S.
Each column in the matrix S contains the magnitudes of all the processed frequencies at a certain timestep.
e.g. Lets say t=1.13[sec].
first find the correct time index in T, which index 'i' yields T[i] =~ t (= 1.13) :
[~, i ] = min(abs(T - t))
lets say you've found i = 11,
now find the INDEX of the maximum magnitude in the i-th column of S:
[~, maxIdx] = max(S(:, i) ) % S(:, i)- The i-th column, containing freq. magnitudes at timestep i
finaly convert that index into a frequency, using F:
maxFrequency = F[maxIdx];
5 Kommentare
Elimelech Schreiber
am 9 Dez. 2020
Yes, replace it if you have already found it.
And skip that step: that line is meant to find the correct index.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Pulsed Waveforms 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!