Matlab - Lectura de datos de Espectrograma

 
Vista:

Lectura de datos de Espectrograma

Publicado por Francisco (7 intervenciones) el 17/12/2015 16:04:13
Hola!

Mi problema es el siguiente: Tengo que leer datos de un espectrograma proveniente de un archivo de audio.

La funcion que estoy utilizando es : [S,F,T,P]=scpectrogram ()

Quisiera saber como hacer para encontrar a que frecuencia(almacenada en F) se da el mayor NPS (almacenado en S)

Osea que lo que deberia hacer es encontrar en que valor de F se da el maximo de S

Intuyo que podria ser con la funcion find, pero no me doy cuenta como implementarlo.




Muchas gracias,saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Lectura de datos de Espectrograma

Publicado por Daniel (264 intervenciones) el 17/12/2015 17:08:56
Tienes varias formas de hacerlo, según el caso algunas pueden ser mejores que otras
La mas compacta es si tienes por ejemplo F y S :

1
2
F=[1 10 50 100 500 1000 2000];
S=[1 20 30  40  50   20 40];
Es poner :
1
disp(F(S==max(S)))

En el caso de que exista la posibilidad de que el maximo se dé varias veces, tendrás la opcion de elegir el primero, el ultimo o con algun criterio que definas explicitamente:

1
2
3
4
5
6
7
8
9
F=[1 10 50 100 500 1000 2000];
S=[1 20 30  40  50  50 40];
 
 j1=find(S==max(S),1,'first');
 j2=find(S==max(S),1,'last');
 
disp(F(S==max(S)))   % muestra 500 y 1000
disp( F(j1)) % muestra 500
disp( F(j2)) % muestra 1000

Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lectura de datos de Espectrograma

Publicado por Francisco (7 intervenciones) el 17/12/2015 17:41:04
Hola Daniel:

Las lineas que me pasaste funcionan bien,solo que yo olvide decirte que S es una matriz (proviene de la STFT) mientras que F es un vector columna,por lo que en coinciden en numero de filas,pero no de columnas,eso hace que me devuelva error.Deberia desmembrar esa matriz en vectores y hacer un bucle para que me compare el vector de F con cada uno de los vectores resultantes de desmembrar S,verdad?

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Lectura de datos de Espectrograma

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/12/2015 00:25:51
Puedes detallar tu pregunta. Porque no es claro. En principio no dices que era matriz, luego dices que es matriz. Otro punto, cuando dices que quieres hallar máximo de S. ¿Quieres hallar el máximo de S y ver luego en F que valor le corresponde a ese máximo? ¿ o quieres hallar máximo de cada columna de S y luego ver para cada máximo de S por columna que valor le corresponde en F?.

Trata de ser claro en tus preguntas. Si no eres claro en tus preguntas. Hay dos puntos que puede suceder. Bien no te contesten tus preguntas o simplemente te den respuestas que no esperabas.


Saludos .
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
[email protected]
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación en Matlab.
Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lectura de datos de Espectrograma

Publicado por Francisco (7 intervenciones) el 14/01/2016 14:38:21
Hola Jeremías,trataré de ser mas claro:


La función que deseo emplear es: [S,F,T,P]=scpectrogram ()

Dicha funcion devuleve lo siguiente:

S= matriz de n x m que contiene los niveles sonoros
F=vector columna de longitud n que contiene la discrectizacion de frecuencias
T= vector fila de longitud m que contiene la discretizacion de tiempos

Lo que deseo es hallar el máximo y luego ver a que frecuencia se corresponde

Espero haber sido mas claro.
Muchas gracias,Francisco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lectura de datos de Espectrograma

Publicado por Francisco (7 intervenciones) el 15/01/2016 13:36:02
El maximo en valor absoluto de los coeficientes de la matriz S.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar