Matlab - Paso de muestras a segundos

 
Vista:

Paso de muestras a segundos

Publicado por Patricia (22 intervenciones) el 19/04/2013 12:05:51
Hola,

llevo varios dias atarcada en cómo poder hacer lo siguiente.

Tengo obtenida una señal de audio en la que en "y" aparecen los valores de amplitud y en "x" los valores "muestras". Yo quiero que en vez que la señal se vea representada en muestras quede en segundos.
Mi señal tiene una longitud de 40.000 muestras (ocupa 5 segundos y Fs=8.000). Yo lo que quiero es que donde pone 8.000 muestas me aparezca 1sg, en 16.000 muestras 2 sg,..., 40.000 muestras 5 sg.

¿Alguna forma de hacerlo?

Gracias!!!
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Paso de muestras a segundos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 19/04/2013 19:44:12
1
2
3
4
5
6
7
8
9
10
clear all
close all
[Senal,Frecuencia_muestreo]=wavread('De gloria en gloria1.wav');
tiempo=size(Senal,1)/Frecuencia_muestreo
x=0:1/Frecuencia_muestreo:tiempo;
canal_derecho=Senal(:,1);
plot(x(2:end), canal_derecho)
xlim([0 tiempo])
xlabel('tiempo')
whos


1
2
3
4
5
6
7
8
9
10
11
12
13
14
EXECUTION
>> procesamiento_audio1
 
tiempo =
 
  106.2340
 
  Name                           Size                    Bytes  Class     Attributes
 
  Frecuencia_muestreo            1x1                         8  double
  Senal                    4684920x2                  74958720  double
  canal_derecho            4684920x1                  37479360  double
  tiempo                         1x1                         8  double
  x                              1x4684921            37479368  double



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Paso de muestras a segundos

Publicado por Dave (1094 intervenciones) el 20/04/2013 01:33:18
Hola Patricia;

Respecto a tu consulta, te copio parte de una código Matlab que te permitiría determinar el vector de tiempo en función a los parámetros de muestro de la señal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clear all,close all,clc
 
load señal.mat
% Lee la señal
 
senhal = mystery;   % señal de audio
Fs=10000;           % Determina la frecuencia de muestreo
T=1/Fs;
L=length(senhal);   % Determina la longitud de la señal
tiempo = (0:L-1)*T; % Calcula el tiempo de duración de la señal
 
subplot(3,3,[1:3])
plot(tiempo,senhal)
xlabel('Tiempo [Seg]')
xlim([0 tiempo])
grid on
 
% A continuación se muestra el código de análisis de frecuencia y 
% espectrograma de la señal de audio.
% ...


Espero que sea de alguna ayuda.

Por otro lado, aprovecho en comentarte sobre mis servicios de programación en Matlab, te dejo el link con mis datos personales e información de contacto http://fismatlab.blogspot.com/.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.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

Paso de muestras a segundos

Publicado por Patricia (22 intervenciones) el 25/04/2013 13:27:01
Muchas gracias a los dos!!!

Lo que tenía hasta el momento se asemejaba más a lo de Jose Jeremias, ceo que la clave para que me terminara de funcionar está en las líneas plot(x(2:end), canal_derecho) y xlim([0 tiempo]).
Sin embargo, no entiendo muy bien "qué significan", sobretodo lo de poner x(2:end)

También he probado con lo de Dave, y aunque lo del plot se asemeja mucho a lo anterior, me seguía ocurriendo lo mismo que me ocurría a mi antes de escribir en el post, tarda en aparecer la imagen y ésta sale vacía, solamente con los ejes, quizás sea por la forma de utilizar el código y demás.

Asi que de momento solucionado, muchas gracias otra vez!!!! Y si me podeis explicar lo que indico más arriba...
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

Paso de muestras a segundos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/04/2013 14:31:03
EJEMPLO:

1
2
3
4
5
6
7
8
9
10
11
[code]>> x=1:0.5:4
 
x =
 
    1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000
 
>> x(2:end)
 
ans =
 
    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000[/code]




Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-
FORMA_DE_APRENDER_MATLAB.html
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

Paso de muestras a segundos

Publicado por Patricia (22 intervenciones) el 25/04/2013 14:52:05
x=1:0.5:4
Este caso, entiendo lo que es, que empieza desde 1 hasta 4 con intervalos de 0.5.

Pero x(2:end), entiendo que significa que x muestra 2 filas y un número indefinido de columnas, pero en nuestro caso lo sigo sin entender...
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

Paso de muestras a segundos

Publicado por Patricia (22 intervenciones) el 25/04/2013 21:49:53
Mejor dicho, x(2:end) sería que la señal de x no muestra los valores desde 2 hasta el final. Pero en nuestro caso sigo sin entenderlo, porque mi señal se muestra desde 0...
He probado cambiando a otros valores x(1:end) o x(3:end), pero dan errores
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

Paso de muestras a segundos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/04/2013 00:00:50
Al parecer no es estudiado los temas de matlab básico, el primer capitulo de matlab básico es el tema de vectores y matrices.
Supongo que haz revisado el link que pongo en cada pregunta que respondo, el link de
http://www.lawebdelprogramador.com/foros/Matlab/1371532-
FORMA_DE_APRENDER_MATLAB.html
, pues allí di incapié la forma como deben empezar estudiar matlab.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-
FORMA_DE_APRENDER_MATLAB.html
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

Paso de muestras a segundos

Publicado por Patricia (22 intervenciones) el 26/04/2013 11:21:13
Me ha costado pero al fin lo he entendido. Se pone x(2:end) para que tenga la misma longitud x y la señal de audio (señal), ya que la longitud de x es la de la señal+1. También podíamos haber puesto: x(1:(end-1))
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

Paso de muestras a segundos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/04/2013 16:38:05
justamente por eso te puse la ejecución del código y el uso de whos al final del código para que puedas ver la dimensiones de tus variables.
Claro muchas veces te va costar entender los códigos resueltos, pero aun es mas costoso hacer los códigos si uno esta empezando en matlab, pero con el esfuerzo y un proceso detallado de los temas de los temas de básico se puede hacer, eso implica tiempo y dedicación y no se puede saltar los temas por solo cuestión de querer ganar tiempo a tiempo. Tu pregunta necesita que uno ya haya estudiado el tema de vectores(primer clase matlab básico según el syllabus de mi blog personal), segunda clase de matlab básico ( para el uso de plot, xlim e ylim), y el estudio del toolbox(caja de herramientas) de audio, en especial el comando wavread() en sus distintas formas uso.



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-
FORMA_DE_APRENDER_MATLAB.html
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

Paso de muestras a segundos

Publicado por Jesus (1 intervención) el 23/04/2016 19:41:37
Hola

Y que tal que lo que quiero hacer es lo mismo pero en tiempo real, mientras obtengo los datos del puerto serie que se grafiquen en función del tiempo y no en función del numero de muestras

Gracias por su ayuda
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