Sunteți pe pagina 1din 38

ESCUELA POLITÉCNICA NACIONAL

Facultad de Ingeniería Eléctrica y Electrónica


Análisis de Señales y Procesos Estocásticos
GRUPO: GR-1.
AULA:Q/E-504-601D.
INGENIERO: Felipe Grijalva.

1st Juan Fabricio Ramos Sarango 2nd Jaime Patricio Ramírez Ramírez
Ingeniería en Tecnologías de la Información Ingeniería en Tecnologías de la Información
FIEE FIEE
Quito,Ecuador Quito,Ecuador
juan.ramos@epn.edu.ec jaime.ramirez01@epn.edu.ec

3rd Luis Eduardo Oña Navarrete 4th Jose David Pallo


Ingeniería en Tecnologías de la Información Ingeniería en Tecnologías de la Información
FIEE FIEE
Quito,Ecuador Quito,Ecuador
luis.ona01@epn.edu.ec jose.pallo01@epn.edu.ec

3 close all %Cerramos todas las ventanas


4 clc %Limpiamos la consola
I. Sesgo y variabilidad en el periodograma
5 Fs =1; %damos el valor a nuestra
frecuencia de muestro
Esta sección muestra cómo reducir el sesgo (bias) y 6 A = [1 -2.7607 3.8106 -2.6535 0.9238];
variabilidad de un periodograma. Realizar lo siguiente: %digitamos los valores del vector A
1. Cree un proceso AR de orden 4 descrito por la 7 %del proceso AR
siguiente ecuación 8 B = 1; %damos el valor al coeficiente
del proceso AR
y[n] − 2,7607y[n − 1] + 3,8106y[n − 2] − 2,6535y[n − 9 [H , F ] = freqz (B ,A ,[] , Fs ) ; %calculamos
3] + 0,9238y[n − 4] = x[n] la respuesta en frecuencia de un
donde x[n] es ruido blanco con media cero y varianza 10 %sistema LTI
unitaria. Para simplificar asumir Fs = 1. Obtenga y 11 dB =20* log10 ( abs ( H ) ) ; %calculamos los
grafique la respuesta en magnitud (en dB) del proceso. valores en dB
Exprese el eje x en Hz y el eje y en dB/Hz. De aqeuí en 12 grid on ; %Activamos cuadricula en el
adelante, llamaremos H(f) a la función de transferencia grafico
de este proceso. Observe que |H(f )|2 es la PSD (Power 13 plot (F , dB , ' linewidth ' ,3 , ' Color ' , ' red ')
Spectral Density),Densidad Espectral de Potencia) teó- ; %graficamos lo solicitado
rica o verdadera. Aunque en la práctica es poco probable 14 xlabel ( ' Frequencia [ Hz ] ') %nombre al
tener la PSD verdadera, en esta sección usaremos la eje x
PSD teórica para compararla con la PSD estimada con 15 ylabel ( ' Magnitud [ dB / Hz ] ') %nombre al
el periodograma y periodograma de Welch para ilustrar eje y
los conceptosde bias y variabilidad. 16 title ( ' PSD estimada ') ; %nombre de la
grafica
Tip: el comando [H,w]=freqz(b,a,[],Fs) permite
obtener la respuesta en frecuencia de un sistema LTI.
Para más detalles consulte la ayuda de Matlab.

CÓDIGO:
1 % Proyecto 6 parte 1
2 clear all %Eliminamos todas las
variables en memoria
PSD estimada Proceso AR(4)
50 80

40 60

30 40
Magnitud [dB/Hz]

20 20

y[n]
10 0

0 -20

-10 -40

-20 -60

-30 -80
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0 100 200 300 400 500 600 700 800 900 1000
Frequencia [Hz] tiempo [s]

2. Para simular realizaciones (i.e muestras u 3. Calcule y grafique el periodograma de la realización


observaciones) y[n] del proceso AR, use el comando y[n] para una ventana rectangular. Sobreponga el plot
randn para generar una entrada aleatoria x[n] de la PSD verdadera. Exprese el eje x en Hz y el eje
de 1000 muestras y filter para implementar la y en dB/Hz. Comente los resultados respecto al bias
ecuación en diferencias del proceso. Para garantizar la y variabilidad del periodograma respecto de la PSD
reproducibilidad de los resultados, ejecute el comando verdadera. Tip: la función periodogram calcula el
rng default antes de ejecutar randn. Grafique una
realización y[n] del proceso. Exprese el eje x en tiempo. periodograma. Consulte la ayuda del Matlab para más
Recuerde que en la práctica lo que se puede obener detalles.
son las realizaciones de un proceso aleatorio. Las
realizaciones son mediciones del fenónmeno del cual COMENTARIOS:
queremos estimar su PSD.
Se puede ver claramente que las dos llevan algo
CÓDIGO: en común que es una tendencia casi parecida en el
intevalor positivo de la magnitud, pero a medida que la
1 % Proyecto 6 parte 2 frecuencia adquiere un valor mayor, esta tiende a cero.
2 clear all %Eliminamos todas las Pero, en este tipo de ventana el bias y la variabilidad
variables en memoria disminuyen..
3 close all %Cerramos todas las ventanas
4 clc %Limpiamos la consola CÓDIGO:
5 Fs =1; %damos el valor a nuestra
frecuencia de muestro 1 % Proyecto 6 parte 3
6 A = [1 -2.7607 3.8106 -2.6535 0.9238]; 2 clear all %Eliminamos todas las
%digitamos los valores del vector A variables en memoria
7 %del proceso AR 3 close all %Cerramos todas las ventanas
8 rng default %comando para calcular la 4 clc %Limpiamos la consola
reproducibilidad de los resultados 5 Fs =1; %damos el valor a nuestra
9 x = randn (1000 ,1) ; %creamos un vector frecuencia de muestro
de valores aleatorios 6 A = [1 -2.7607 3.8106 -2.6535 0.9238];
10 y = filter (1 ,A , x ) ; %implementamos para %digitamos los valores del vector A
usar la ecu en diferencias 7 %del proceso AR
11 hold on ; %Funcion que nos permite 8 B = 1; %damos el valor al coeficiente
añadir otro grafico del proceso AR
12 plot (y , ' Color ' , ' green ') %graficamos lo 9 rng default %comando para calcular la
pedido reproducibilidad de los resultados
13 xlabel ( ' tiempo [ s ] ') %nommbre al eje x 10 x = randn (1000 ,1) ; %creamos un vector
14 ylabel ( 'y [ n ] ') %nombre al eje y de valores aleatorios
15 title ( ' Proceso AR (4) ') ; %escribimos el 11 y = filter (1 ,A , x ) ; %implementamos para
titulo de la grafica usar la ecu en diferencias
12 [ pxx , w ] = periodogram (y , rectwin ( length
( y ) ) , length ( y ) , Fs ) ; %calculamos el
13 %periodograma con una ventana de 4. Calcule y grafique el periodograma de la realización
hamming y[n] para una ventana de Hamming. Sobreponga el
14 plot (w ,10* log10 ( pxx ) , ' Color ' , ' red ') % plot de la PSD verdadera. Exprese el eje x en Hz y el
graficamos lo solicitado eje y en dB/Hz. Comente los resultados respecto al bias
15 [H , F ] = freqz (B ,A ,[] , Fs ) ; %calculamos y variabilidad del periodograma respecto de la PSD
la respuesta en frecuencia de un verdadera.
16 %sistema LTI
17 dB =20* log10 ( abs ( H ) ) ; %calculamos los COMENTARIOS:
valores en dB
18 hold on ; %Funcion que nos permite Se puede destacar que las dos son muy parecidas
añadir otro grafico y tienden de la misma manera a medida que se aumenta
19 grid on ; %Activamos cuadricula en el la frecuencia. Pero, en este tipo de ventana el bias y la
grafico variabilidad aumentan.
20 plot (F , dB , ' linewidth ' ,3 , ' Color ' , ' blue '
) ; %graficamos lo solicitado CÓDIGO:
21 xlabel ( ' Frequencia [ Hz ] ') %nombre del
eje x 1 % Proyecto 6 parte 4
22 ylabel ( ' Magnitud [ dB / Hz ] ') %nombre del 2 clear all %Eliminamos todas las
eje y variables en memoria
23 title ( ' PSD ') ; %titulo de la grafica 3 close all %Cerramos todas las ventanas
24 legend ( ' Periodograma ( Ventana 4 clc %Limpiamos la consola
rectangular ) ' , ' PSD verdadera ') % 5 Fs =1; %damos el valor a nuestra
ponemos leyenda frecuencia de muestro
25 %( identificacion ) a nuestras graficas 6 A = [1 -2.7607 3.8106 -2.6535 0.9238];
%digitamos los valores del vector A
7 %del proceso AR
PSD
8 B = 1; %damos el valor al coeficiente
50
Periodograma(Ventana rectangular)
del proceso AR
40 PSD verdadera
9 rng default %comando para calcular la
30
reproducibilidad de los resultados
10 x = randn (1000 ,1) ; %creamos un vector
Magnitud [dB/Hz]

20
de valores aleatorios
10 11 y = filter (1 ,A , x ) ; %implementamos para
0
usar la ecu en diferencias
12 [ pxx , w ] = periodogram (y , hamming ( length
-10
( y ) ) , length ( y ) , Fs ) ; %calculamos el
-20 13 %periodograma con una ventana de
-30
hamming
0 0.05 0.1 0.15 0.2 0.25 0.3
Frequencia [Hz]
0.35 0.4 0.45 0.5 14 plot (w ,10* log10 ( pxx ) , ' Color ' , ' yellow ')
%graficamos lo solicitado
15 [H , F ] = freqz (B ,A ,[] , Fs ) ; %calculamos
la respuesta en frecuencia de un
16 %sistema LTI
17 dB =20* log10 ( abs ( H ) ) ; %calculamos los
valores en dB
18 hold on ; %Funcion que nos permite
añadir otro grafico
19 grid on ; %Activamos cuadricula en el
grafico
20 plot (F , dB , ' linewidth ' ,3 , ' Color ' , ' green
') ; %graficamos lo solicitado
21 xlabel ( ' Frequencia [ Hz ] ') %nombre del
eje x
22 ylabel ( ' Magnitud [ dB / Hz ] ') %nombre del
eje y
23 title ( ' PSD ') ; %titulo de la grafica
24 legend ( ' Periodograma ( Ventana de 5. Calcule y grafique el periodograma de Welch
Hamming ) ' , ' PSD verdadera ') %ponemos de la realización y[n]. Escoga los parámetros (i.e
leyenda ventana,tamaño de la ventana, sobreposición) de modo
25 %( identificacion ) a nuestras graficas que el bias y variabilidad se reduzcan. Sobreponga el
plot de la PSD verdadera.Exprese el eje x en Hz y el
eje y en dB/Hz. Comente los resultados respecto al bias
PSD
y variabilidad del periodograma de Welch respecto de
50
Periodograma(Ventana de Hamming)
la PSD verdadera. Tip: la función pwelch calcula el
PSD verdadera
40
periodograma de Welch. Consulte la ayuda de Matlab
30 para más detalles.
Magnitud [dB/Hz]

20

COMENTARIOS:
10

0 El periodograma de welch con una ventana de blackman


-10 que crea puntos simetricos se llega a una periodograma
mas cercano a la pds real ya que practicamente es la
-20
misma en especial en los picos
-30
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Frequencia [Hz] CÓDIGO:
1 % Proyecto 6 parte 4
2 clear all %Eliminamos todas las
variables en memoria
3 close all %Cerramos todas las ventanas
4 clc %Limpiamos la consola
5 Fs =1; %damos el valor a nuestra
frecuencia de muestro
6 A = [1 -2.7607 3.8106 -2.6535 0.9238];
%digitamos los valores del vector A
7 %del proceso AR
8 B = 1; %damos el valor al coeficiente
del proceso AR
9 rng default %comando para calcular la
reproducibilidad de los resultados
10 x = randn (1000 ,1) ; %creamos un vector
de valores aleatorios
11 y = filter (1 ,A , x ) ; %implementamos para
usar la ecu en diferencias
12 [ pxx , w ] = pwelch (y , blackman (120)
,100 ,100 , Fs ) ; %calculamos el
13 %periodograma de welch
14 plot (w ,10* log10 ( pxx ) , ' Color ' , ' red ') %
graficamos lo solicitado
15 [H , F ] = freqz (B ,A ,[] , Fs ) ; %calculamos
la respuesta en frecuencia de un
16 %sistema LTI
17 dB =20* log10 ( abs ( H ) ) ; %calculamos los
valores en dB
18 hold on ; %Funcion que nos permite
añadir otro grafico
19 grid on ; %Activamos cuadricula en el
grafico
20 plot (F , dB , ' linewidth ' ,3 , ' Color ' , ' black
') ; %graficamos lo solicitado
21 xlabel ( ' Frequencia [ Hz ] ') %nombre del
eje x
22 ylabel ( ' Magnitud [ dB / Hz ] ') %nombre del Implementación en Matlab que reciba la señal en
eje y entrada y automáticamente retorne la velocidad de
23 title ( ' PSD ') ; %titulo de la grafica caminar/correr. El script no requerirá intervención
24 legend ( ' Periodograma de Welch ' , ' PSD del usuario para retornar la velocidad.
verdadera ') %damos una Qué señales usa para estimar la velocidad y por
identificacion qué?. Recuerde que sus señales originales fueron
25 %a la grafica procesadas y descompuestas en componentes de
gravedad y corporal. Además, cada señal tiene 3
componentes (x,y,z) y el módulo de la misma.
PSD Qué método de estimación espectral usa y por qué?
50
Periodograma de Welch qué parámetros (i.e ventana, tamaño de la ventana,
PSD verdadera
40 sobreposición) usa y cómo afectan los mismos a la
30
estimación de velocidad?
Pruebe su metodología con las señales de caminar y
Magnitud [dB/Hz]

20
correr de todos los alumnos del curso.Tabule
10 los resultados obtenidos en una tabla con las si-
0
guientes columnas: ID,Actividad,Velocidad Estima-
da. Además, genere un histograma de la velocidad
-10
estimada. Comente sus resultados.
-20 Estime el error cuadrático medio (MSE,Mean Squa-
-30
red Error) de su metología para la acividad caminar
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Frequencia [Hz]
y correr. Use como valor verdaderos los valores
tabulados en link.
Tip: el comando histogram genera los histogramas en
Observaciones: Matlab.
Las amplitudes de las PSD deben ser expresadas en
dB/Hz y la frecuencia en Hz. II-A. METOLOGÍA
No use subplots Se procede a procesar la señal con la función pre-
No use stem processing.m dada en el anexo del trabajo.
Las señales utilizas para explicar la metodología
II. Metodología para estimar velocidad pertenecen a las actividades de camiar y trotar a
usando métodos de estimación espectral continuación se muestra las señales que pertecen
a cada una de estas actividades con su respectivo
procesamiento.
Proponga una metodología para estimar la velocidad
al caminar y correr en pasos/minuto a partir de las
SEÑAL ACT.3 SIN PROCESAR
señales obtenidas del acelerómetro usando métodos de
estimación espectral. Antes de usar las señales, procese
Grafica de la actividad caminando (sin procesar))
cada señal con la función: 1.8

1.6

[t, gravacc_t, bodyacc_t] = 1.4

preprocessing(t_nonu nif orm, sig_non_unif orm, F s)


1.2

t:vector de tiempo
TgF

0.8
gravacc_t:componente de aceleración gravitacional
0.6

bodyacc_t:componente de aceleración corporal


0.4

t_non_uniform:vector de tiempo sin procesar(no uni-


0.2

forme) capturado por el sensor 0 20 40 60


t(s)
80 100 120

sig_non_uniform:señal sin procesar capturada por el


sensor.
Fs:frecuencia de muestreo deseada. Usar Fs = 50 Hz.
La descripción detallada de su metodología deberá
contener al menos lo siguiente:
SEÑAL ACT.3 PROCESADA Una vez ya procesadas las señales usaremos la señal
de la aceleración corporal bodyacc_tdebido a que
esta aporta una mayor infomación con respecto a
0
Senial aplicando la ventana de Blackman los movimientos que haya tenido el usuario además
es de mayor utilidas debido a que estamos traba-
-20
jando con 2 actividades que son de movimiento y
-40
por lo cual nos entregará una mayor visión de los
-60 datos de la aceleración
Magnitud [db/Hz]

-80 Una vez identificada la señal de la aceleración


-100
corporal procederemos a aplicar el periodograma de
Welch el cual es un método para la estimación de
-120
densidad espectral el cual nos ayudará a determinar
-140
la estimación de la velocidad deseada.
-160 En Matlab la implementación del periodograma de
-180 Welch viene dado por la función pwelch() el cual
0 5 10 15 20 25
frecuencia [Hz] depende de algunas variables que se explicaran ene
literal 3 del cuestionario.
Tambien se hace el uso del comando findpeaks el
SEÑAL ACT.4 SIN PROCESAR cual nos servirá para encontrar el pico más alto
de la PDS lo cual será de gran ayuda ya que
se tendría el valor en un ciclo lo que equivale a
Grafica de la actividad caminando (sin procesar))
pasos por segundos para obtener la velocidad que
8

requerimos solo tendremos que multiplicar por 60


7
y redondeando para obtener asi un numero entero.
6
Se utiliza la ventana de blackman la cual será de
5 gran ayuda para calcular el mayor pico fácilmente
se explica a mas detalle en el literal (3) del cuestio-
TgF

3
nario.
Existen dos variables que nos devuelve el periodo-
2

grama de Welch estas son la ppx la cual Devuelve


1
una estimación de PSD de welch en nuestro caso
0
0 20 40 60 80 100 120 como usamos la función findpeaks tenemos que
t(s)

transformar este vector a db/Hz por lo cual se


utilizara la siguiente transformacion 10∗log10(pxx)
y w el cual es el vector de frecuencia normalizado
SEÑAL ACT.4 PROCESADA este servirá para hallar el valor de la máxima fre-
cuencia el cual requeriremos para hallar para hallar
el mínimo de elementos del vector w mediante la
Senial Procesada función min() de Matlab lo cual nos servirá para
1.5
la estimacion de nuestra velocidad.
A continuación se muestra las seãles aplicando el
1 periodograma de Welch de las actividades 3 y 4.

SEÑAL DE ACT.3 APLICANDO


0.5
PERIODOGRAMA DE WELCH
TgF

-0.5

-1
0 20 40 60 80 100 120
t(s)
Senial aplicando la ventana de Blackman 16 xlim ([0 120]) % limitacion del
0
tiempo de 0 a 120 segundos
-20
17 ylabel ( ' TgF ')
-40 18 xlabel ( 't ( s ) ')
-60 19 title ( ' Grafica de la actividad
Magnitud [db/Hz]

-80
caminando ( sin procesar ) ) ')
20
-100
21
-120
22 t_non_uniform = v_tiempo ;
-140 23 sig_non_uniform = m_aceleracion ;
-160 24 Fs = 50; %Frecuencia de muestreo
-180 25
0 5 10 15
frecuencia [Hz]
20 25
26 % funcion para procesar la señal
27 [t , gravacc_t , bodyacc_t ]=
preprocessing ( t_non_uniform ,
SEÑAL DE ACT.4 APLICANDO sig_non_uniform , Fs ) ;
PERIODOGRAMA DE WELCH 28
29
Senial aplicando la ventana de Blackman 30 %Grafica de la señal procesada
20
31 figure (2)
0
32
-20
33 plot (t , bodyacc_t )
-40
34 title ( ' Senial Procesada ')
Magnitud [db/Hz]

-60
35 xlim ([0 120])
-80 36 ylabel ( ' TgF ')
-100 37 xlabel ( 't ( s ) ')
-120 38
-140 39 % aplicacion del periodograma de
-160 welch
-180
40
0 5 10 15
frecuencia [Hz]
20 25
41 [ pxx , w ] = pwelch ( bodyacc_t ,
blackman (1000) , 99 , 5000 , Fs ) ;
42 PxxdB =10* log10 ( pxx ) ;
43 [ pk , MaxFreq ] = findpeaks ( PxxdB , '
CÓDIGO DEL SCRIPT
NPeaks ' ,1 , ' SortStr ' , ' descend ') ;
44
1 % % CAMINAR 45 figure (3)
2 clc 46 % grafica de la señal aplicando la
3 clear all ventana de Blackman con el
4 close all periodograma
5 47 % de Welch
6 %Obtenemos la señal de los archivos 48
. cvs } 49 plot (w , PxxdB )
7 % Archivo csv de la señal caminando 50 hold on
8 51 plot ( w ( MaxFreq ) ,pk , ' or ')
9 C = dlmread ( ' raw_219_3 . csv ') ; % 52 title ( ' Senial aplicando la ventana
archivo original csv de Blackman ')
10 v_tiempo = C (: ,1) - 12; % vector 53 ylabel ( ' Magnitud [ db / Hz ] ')
del tiempo sin procesar 54 xlabel ( ' frecuencia [ Hz ] ')
11 m_aceleracion = C (: ,5) ; % vector 55 % Obtencion de la velocidad
modulo de la aceleracion sin estimada
procesar 56
12 57 w ( MaxFreq ) ;
13 % grafica de la señal sin procesar 58
14 figure (1) 59 velocidad = round ( min ( w ( MaxFreq ) ) *60)
15 plot ( v_tiempo , m_aceleracion ) ;
60 41 [ pxx , w ] = pwelch ( bodyacc_t ,
61 sprintf (" La velocidad es : "+ blackman (1000) , 99 , 5000 , Fs ) ;
num2str ( velocidad ) + " pasos / 42 PxxdB =10* log10 ( pxx ) ;
minuto ") 43 [ pk , MaxFreq ] = findpeaks ( PxxdB , '
NPeaks ' ,1 , ' SortStr ' , ' descend ') ;
44
1 % % Trotando 45 figure (3)
2 clc 46 % grafica de la señal aplicando la
3 clear all ventana de Blackman
4 close all 47 plot (w , PxxdB )
5 48 hold on
6 %Obtenemos la señal de los archivos 49 plot ( w ( MaxFreq ) ,pk , ' or ')
. cvs } 50 title ( ' Senial aplicando la ventana
7 % Archivo csv de la señal caminando de Blackman ')
8 51 ylabel ( ' Magnitud [ db / Hz ] ')
9 C = dlmread ( ' raw_219_4 . csv ') ; % 52 xlabel ( ' frecuencia [ Hz ] ')
archivo original csv 53 % Obtencion de la velocidad
10 v_tiempo = C (: ,1) - 7; % vector del estimada
tiempo sin procesar 54
11 m_aceleracion = C (: ,5) ; % vector 55 w ( MaxFreq ) ;
modulo de la aceleracion sin 56
procesar 57 velocidad = round ( min ( w ( MaxFreq ) ) *60)
12 ;
13 % grafica de la señal sin procesar 58
14 figure (1) 59 sprintf (" La velocidad es : "+
15 plot ( v_tiempo , m_aceleracion ) num2str ( velocidad ) + " pasos /
16 xlim ([0 120]) % limitacion del minuto ")
tiempo de 0 a 120 segundos
17 ylabel ( ' TgF ')
II-B. CUESTIONARIO
18 xlabel ( 't ( s ) ')
19 title ( ' Grafica de la actividad PREGUNTA N.-1 Una vez que se ejecuta el
caminando ( sin procesar ) ) ') script anterior se obtendrá un dato como el que
20 se muestra a continuación este dato indicada
21 la velocidad en pasos/minut de la actividadad
22 t_non_uniform = v_tiempo ; selecccionada.
23 sig_non_uniform = m_aceleracion ;
24 Fs = 50; %Frecuencia de muestreo
25
26 % funcion para procesar la señal
27 [t , gravacc_t , bodyacc_t ]=
preprocessing ( t_non_uniform ,
sig_non_uniform , Fs ) ;
28
29
30 %Grafica de la señal procesada
31 figure (2)
32
33 plot (t , bodyacc_t )
34 title ( ' Senial Procesada ')
35 xlim ([0 120])
36 ylabel ( ' TgF ') PREGUNTA N.-2 Para la estimacion de las
37 xlabel ( 't ( s ) ') velocidades se utilizó la señal de la aceleración
38 corporal bodyacc_t debido a que esta aporta una
39 % aplicacion del periodograma de mayor información para los datos de movimiento
welch además cabe recalcar que no se utilizó ninguna de
40 las 3 componentes de la aceleración únicamente se
II-C. APLICACIÓN DE LA METODOLOGÍA
Aplicando nuestra metodología procederemos a
obtener los datos de las velocidades para alumno esto
lo haremos en base a la tabla que se encuentra en el
anexo del trabajo una vez ya realizada la tabulación
se procedera a graficar los respectivos histogramas a
continuación se muestra las tabualciones para una de
las actividades y los códigos con los que se generan los
histogramas

ID VELOCIDAD ESTIMADA
utilizó el módulo del vector de la aceleración.
201 101
202 92
PREGUNTA N.-3 Se utilizó el método de 203 92
estimación de Welch porque es el método más 204 91
205 85
eficiente al momento de realizar estimaciones
206 89
debido a que se determina la mayor aproximación 207 81
en una estimación en donde cada uno de 208 93
los periodogramas se promedia. La razón 209 98
210 117
anteriormente dada es lo que nos llevo a usar 211 99
este método debido a que si cada uno de los 212 103
periodogramas se promedia obtendremos una 213 81
mayor estimación de la velocidad que queremos 214 73
215 118
calcular. 216 95
217 81
Como ya se dijo anteriormente Matlab implemente 218 no presenta datos
219 73
el periodograma de Welch pero lo hace de varias 220 76
maneras una de ellas es la que se muestra a 221 103
continuación: 222 91
223 91
224 90
[pxx, f ] = pwelch(x, window, noverlap, f, f s) 225 116
226 100
donde: 227 98
228 99
229 95
En donde x será nuestra señal bodyacc_t 230 80
231 no presentan datos
window en nuestro caso usaremos la ventana 232 103
Cuadro I
de blackman para realizar nuestra estimación Tabla 2.ACTIVIDAD 3 ÇAMINANDO".
debido a que se retorna puntos simétricos con
lo cual la señal se simplifica mucho, es decir se
eliminan la mayoría de picos permitieno calcular
el mayor pico fácilmente.

noverlap es el número de muestras anidadas


en la ventana, especificando como un entero
positivo menos que la longitud específica un valor
vacío, se utilizará un solo valor para obtener una
superposición del 50 porciento entre los segmentos.

f es la frecuencia la cual puede ser un vector


o un escalar en nuestro caso usaremos una
frecuencia de 5000 para poder aproximarnos a los
valores deseados de la velocidad.

fs es la frecuencia de muestro ya dada la cual es


50 Hz.
ANÁLISIS DE RESULTADOS 21 aux = find (
T a b l a _ t o t a l _ s e n i a l e s _ r a w . ID
En el histograma se analiza que existen datos espaciados == id ) ;
eso se debe a que una cierta cantidad de personas cuya 22 %Extracción del vector tiempo
velocidad es baja para caminar. te la tabla
23 t_non_uniform =
Más del 75 porciento de personas que participan Tabla_total_seniales_raw .t{
en esta experimentación su velocidad se encuentra entre aux (3) ,1};
los límites de los 73 pasos/min a los 100 pasos/min. 24 %Extracción del vector
aceleracion te la tabla
Por la tabulación se puede decir que los resultados 25 sig_non_uniform =
arrojados para las personas que realizan la actividad de Tabla_total_seniales_raw .
caminar están asemejados a la realidad. tgt { aux (3) ,1};
26
27 Fs = 50; %Frecuencia de
muestreo
28
29 %Presocesamiento de las señales
de la tabla
30 [t , gravacc_t , bodyacc_t ]=
preprocessing ( t_non_uniform ,
sig_non_uniform , Fs ) ;
31
32 %Estimacion espectral por
medio del metodo de Welch
33 [ pxx , w ] = pwelch ( bodyacc_t ,
blackman (1000) , 99 , 5000 ,
Fs ) ;
CÓDIGO ACTIVIDAD 3
34
1 % % Calculo de la velocidad caminando 35
2 36 PxxdB =10* log10 ( pxx ) %
3 clc Realización del cambio de
4 clear all unidad a decibeles
5 close all 37
6 38 %Por medio de la funcion
7 findpeaks buscamos los
8 %Cargamos la tabla dada para realizar picos en las
los calculos 39 %muestras . Los picos mas altos
9 load ( ' T a b l a _ t o t a l _ s e n i a l e s _ r a w . mat ') se consideran un paso
10 40 [ pk , MaxFreq ] = findpeaks ( PxxdB
11 i = 1; %Inicializacion de la matriz , ' NPeaks ' ,1 , ' SortStr ' , '
velocidad a generar descend ') ;
12 41
13 %bucle en el que hacemos las 42 w ( MaxFreq ) ;
iteraciones necesarias para 43
14 %realizar los calculos de velocidad 44 %Guardamos la velocidad de
corriento y caminadno cada estudiante en una
15 for id = 201:1:232 matriz
16 %Los indices son en funcion de los ID 45 velocidad ( i ) = round ( min ( w (
de cada persona MaxFreq ) ) *60) ;
17 46 i = i +1; %Aumento del
18 %Condicion necesaria , dado que los ID indice de la matriz
218 y 131 no existe en la tabla Velocidad
19 if ( id ~= 218 & id ~= 231) 47 end
20 %Busqueda de la posicion en la 48 end
tabla de los ID ingresados 49
ID VELOCIDAD ESTIMADA
50 %Graficas
201 158
51 %Histograma del numero de personas en 202 150
52 %funcion de la velocidad en pasos / 203 161
minuto 204 167
205 140
53
206 141
54 h = histogram ( velocidad ) 207 150
55 title ( ' Histograma de Velocidad 208 158
Caminando en pasos / min ') 209 145
210 170
56 ylabel ( ' Numero de personas ') 211 138
57 xlabel ( ' Velocidad en pasos / minuto ') 212 160
213 139
214 154
215 170
216 138
217 74
218 no presenta datos
219 156
220 171
221 160
222 164
223 114
224 151
225 169
226 161
227 164
228 166
229 164
230 152
231 no presentan datos
232 151
Cuadro II
Tabla 2.ACTIVIDAD 4 "TROTANDO".

ANÁLISIS DE RESULTADOS

En el histograma se analiza que la mayoría de


datos se encuentran juntos existe una minoría que se
encuentra distanciada.

Se determina que mas del 50 porcient0 de los


participantes en esta experimentación , su velocidad
al trotar se encuentra en un promedio de 140 a 180
pasos/min.

CÓDIGO ACTIVIDAD 4
1 % % Calculo de la velocidad corriendo 36
2 37
3 clc 38 PxxdB =10* log10 ( pxx ) ; %Realización
4 clear all del cambio de unidad a decibeles
5 close all 39
6 40 %Por medio de la funcion
7 findpeaks buscamos los
8 %Cargamos la tabla dada para realizar picos en las
los calculos 41 %muestras . Los picos mas altos
9 load ( ' T a b l a _ t o t a l _ s e n i a l e s _ r a w . mat ') se consideran un paso
10 %Inicializacion de la matriz velocidad 42 [ pk , MaxFreq ] = findpeaks ( PxxdB
a generar , ' NPeaks ' ,1 , ' SortStr ' , '
11 descend ') ;
12 i = 1; 43
13 %bucle en el que hacemos las 44 w ( MaxFreq ) ;
iteraciones 45
14 %necesarias para realizar los calculos 46 %Guardamos la velocidad de
de velocidad corriento y caminando cada estudiante en una
15 for id = 201:1:232 matriz
16 %Los indices son en funcion de los ID 47 velocidad ( i ) = round ( min ( w (
de cada persona MaxFreq ) ) *60) ;
17 48 i = i +1; %Aumento del
18 %Condicion necesaria , dado que los ID indice de la matriz
218 y 131 no existe en la tabla Velocidad
19 if ( id ~= 218 & id ~= 231) 49 end
20 %Busqueda de la posicion en la tabla 50 end
de los ID ingresados 51
21 aux = find ( 52 %Graficas
T a b l a _ t o t a l _ s e n i a l e s _ r a w . ID 53 %Histograma del numero de personas en
== id ) ; funcion
22 %Extracción del vector tiempo te la 54 %de la velocidad en pasos / minuto
tabla 55
23 t_non_uniform = 56 h = histogram ( velocidad )
Tabla_total_seniales_raw .t{ 57
aux (4) ,1}; 58 title ( ' Histograma de Velocidad
24 %Extracción del vector aceleracion te Corriendo en pasos / min ')
la tabla 59 ylabel ( ' Numero de personas ')
25 sig_non_uniform = 60 xlabel ( ' Velocidad en pasos / minuto ')
Tabla_total_seniales_raw .
tgt { aux (4) ,1}; CONCLUSIONES:
26
27 Fs = 50; %Frecuencia de Para finalizar el análisis de datos se puede comprobar
muestreo que los resultados obtenidos de la experimentación tanto
28 de la actividad de trotar como la de caminar tienen una
29 cierta diferencia ya que se comprobó que efectivamente
30 %Presocesamiento de las señales de la debe existir un mayor numero de pasos/min en una
tabla actividad que requiere una mayor velocidad.
31 [t , gravacc_t , bodyacc_t ]=
preprocessing ( t_non_uniform , Un histograma debe seguir en la mayoría de veces
sig_non_uniform , Fs ) ; una distribución normal pero cabe recalcar que esto es
32 una experimentación cada persona va a tener diferentes
33 %Estimacion espectral por medio del velocidades y eso se comprueba con los histogramas
metodo de Welch además se puede determinar que estos histogramas
34 [ pxx , w ] = pwelch ( bodyacc_t , siguen una secuencia asimétrica
blackman (1000) , 99 , 5000 , Fs ) ;
35
II-D. ERROR CUADRÁTICO MEDIO Velocidad ;
CÓDIGOS: 35
36
1 % % ERROR CUADRATICO MEDIO DE LA 37 %CALCULO DEL ERROR CUADRATICO MEDIO£
VELOCIDAD CAMINANDO 38 %Donde su formula es : ECM = (1/ n )
2 clc Sumatorio ( v_estimadas -
3 clear all v_verdaderos ) ^2
4 close all 39 %de donde :
5 40 %v_estimadas : Velocidad estimada
6 %Valores Verdaderos obtenidos de la 41 %v_verdaderos : Son los datos extraidos
tabla de la tabla
7 42
8 j = 1; %Inicializacion del indice 43 sumatorio = 0; %Inicualizacion de la
para la matriz del ID variable sumatorio
9 44 for j = 1:30
10 %Bucle en el que hacemos las 45 %Cuadrado de la resta de los
iteraciones necesarias para valores estimados y verdaderos
realizar los 46 sum_aux = ( velocidades_est ( j ) -
11 %calculos de velocidad corriento y v_verdaderos (j ,2) ) ^2;
caminadno los indices son en 47
funcion 48 %Sumatorio de las nuevas variables
12 %de los ID de cada persona con la anterior
13 for i = 201:232 49 sumatorioM ( j ) = sum_aux ;
14 50
15 if i ~= 218 & i ~= 231 51 end
16 52
17 id ( j ) =[ i ]; %Asignacion 53 %Division para el numero de valores (
de los valores ID Formula )
18 j = j +1; 54 ECM = sum ( sumatorioM ) / length (
19 end v_verdaderos )
20 end
21
22 %Valores extraidos de la tabla de la
velocidad caminando . pasos por
minuto
23 vel o c i da d _ ca m i na n d o =
[96;95;100;90;87;88;90;92;93;102;98;111;60;83;98;93;

24 98;82;100;102;95;98;89;110;95;93;100;97;80;78];

25
26 %Matriz con los valores de ID y la
velocidad caminando
27 v_verdaderos = [ id '
v e lo c i da d _ ca m i na n d o ];
28
29 %Carga de la matriz de la velocidad
caminando estimada
30 %para extraer los datos
31 load ( ' V e l o c i d a d e s _ E S t i m a d a s _ C a m i n a n d o .
mat ')
32
33 %Asignacion de la matriz anterior a
una variable
34 velocidades_est =
Velocidades_EStimadas_Caminando .
Velocidad ;
1 % % ERROR CUADRATICO MEDIO DE LA 34
VELOCIDAD CORRIENDO 35
2 36 %CALCULO DEL ERROR CUADRATICO MEDIO
3 clc 37 %Donde su formula es : ECM = (1/ n )
4 clear all Sumatorio ( v_estimadas -
5 close all v_verdaderos ) ^2
6 38 %de donde :
7 %Valores Verdaderos obtenidos de la 39 %v_estimadas : Velocidad estimada
tabla 40 %v_verdaderos : Son los datos extraidos
8 de la tabla
9 j = 1; %Inicializacion del indice 41
para la matriz del ID 42 sumatorio = 0; %Inicualizacion de
10 la variable sumatorio
11 %Bucle en el que hacemos las 43 for j = 1:30
iteraciones necesarias para 44
realizar 45 %Cuadrado de la resta de los
12 %los calculos de velocidad corriendo valores estimados y verdaderos
los indices son en 46 sum_aux = ( velocidades_est ( j ) -
13 %funcion de los ID de cada persona v_verdaderos (j ,2) ) ^2;
14 for i = 201:232 47 %Sumatorio de las nuevas variables
15 if i ~= 218 & i ~= 231 con la anterior
16 id ( j ) =[ i ]; %Asignacion 48 sumatorioM ( j ) = sum_aux ;
de los valores ID 49
17 j = j +1; % 50 end
Actualizacion de la 51
variable 52 %Division para el numero de valores (
18 end Formula )
19 end 53 ECM = sum ( sumatorioM ) / length (
20 v_verdaderos ) ;
21 %Valores extraidos de la tabla de la 54 ECM = floor ( ECM ) %Tranformacion a
velocidad corriendo en pasos por un entero
minuto
22 vel o c i da d _ co r r ie n d o =
[137;140;98;165;139;155;140;157;140;125;145;

23 135;146;134;160;141;134;158;150;150;151;128;

24 139;145;153;137;160;147;140;161];

25
26 %Matriz con los valores de ID y la
velocidad corriendo
27 v_verdaderos = [ id '
v e lo c i da d _ co r r ie n d o ];
28
29 %Carga de la matriz de la velocidad
corriendo estimada para extraer los
datos
30 load ( ' V e l o c i d a d e s _ E S t i m a d a s _ C o r r i e n d o .
mat ')
31
32 %Asignacion de la matriz anterior a
una variable
33 velocidades_est =
Velocidades_EStimadas_Corriendo .
II-E. SEŃAL A COMPROBAR 21 ylabel ( ' Magnitud [ db / Hz ] ')
22 xlabel ( ' frecuencia [ Hz ] ')
Senial aplicando la ventana de Blackman
23 % Obtencion de la velocidad estimada
0

24
w ( MaxFreq ) ;
-20

25
-40
26
velocidad = round ( min ( w ( MaxFreq ) ) *60) ;
-60
27
-80
28
-100
29 sprintf (" La velocidad es : "+ num2str (
-120
velocidad ) + " pasos / minuto ")
-140

-160

-180
0 5 10 15 20 25

CÓDIGO SEÑAL COMPROBADA


1 % % Señal tbodyacc_t
2 clc
3 clear all
4 close all
5
6
7 load ( ' tbodyacc_t . mat ') ;
8
9
10 % aplicacion del periodograma de welch
11 Fs =50;
12 [ pxx , w ] = pwelch ( tbodyacc_t , blackman
(1000) , 99 , 5000 , Fs ) ;
13 PxxdB =10* log10 ( pxx ) ;
14 [ pk , MaxFreq ] = findpeaks ( PxxdB , ' NPeaks
' ,1 , ' SortStr ' , ' descend ') ;
15
16 % grafica de la señal aplicando la
ventana de Blackman
17 plot (w , PxxdB )
18 hold on
19 plot ( w ( MaxFreq ) ,pk , ' or ')
20 title ( ' Senial aplicando la ventana de
Blackman ')
III. Anexos

% Proyecto 6 parte 1
clear all %Eliminamos todas las variables en memoria
close all %Cerramos todas las ventanas
clc %Limpiamos la consola
Fs=1;%damos el valor a nuestra frecuencia de muestro
A = [1 -2.7607 3.8106 -2.6535 0.9238];%digitamos los valores del
vector A
%del proceso AR
B = 1;%damos el valor al coeficiente del proceso AR
[H,F] = freqz(B,A,[],Fs);%calculamos la respuesta en frecuencia de un
%sistema LTI
dB=20*log10(abs(H));%calculamos los valores en dB
grid on; %Activamos cuadricula en el grafico
plot(F,dB,'linewidth',3,'Color','red');%graficamos lo solicitado
xlabel('Frequencia [Hz]')%nombre al eje x
ylabel('Magnitud [dB/Hz]')%nombre al eje y
title('PSD estimada');%nombre de la grafica

Published with MATLAB® R2018b

1
% Proyecto 6 parte 2
clear all %Eliminamos todas las variables en memoria
close all %Cerramos todas las ventanas
clc %Limpiamos la consola
Fs=1;%damos el valor a nuestra frecuencia de muestro
A = [1 -2.7607 3.8106 -2.6535 0.9238];%digitamos los valores del
vector A
%del proceso AR
rng default%comando para calcular la reproducibilidad de los
resultados
x = randn(1000,1);%creamos un vector de valores aleatorios
y = filter(1,A,x);%implementamos para usar la ecu en diferencias
hold on; %Funcion que nos permite añadir otro grafico
plot(y,'Color','green')%graficamos lo pedido
xlabel('tiempo [s]')%nommbre al eje x
ylabel('y[n]')%nombre al eje y
title('Proceso AR(4)');%escribimos el titulo de la grafica

Published with MATLAB® R2018b

1
% Proyecto 6 parte 3
clear all %Eliminamos todas las variables en memoria
close all %Cerramos todas las ventanas
clc %Limpiamos la consola
Fs=1;%damos el valor a nuestra frecuencia de muestro
A = [1 -2.7607 3.8106 -2.6535 0.9238];%digitamos los valores del
vector A
%del proceso AR
B = 1;%damos el valor al coeficiente del proceso AR
rng default%comando para calcular la reproducibilidad de los
resultados
x = randn(1000,1);%creamos un vector de valores aleatorios
y = filter(1,A,x);%implementamos para usar la ecu en diferencias
[pxx,w] = periodogram(y,rectwin(length(y)),length(y),Fs);%calculamos
el
%periodograma con una ventana de hamming
plot(w,10*log10(pxx),'Color','red')%graficamos lo solicitado
[H,F] = freqz(B,A,[],Fs);%calculamos la respuesta en frecuencia de un
%sistema LTI
dB=20*log10(abs(H));%calculamos los valores en dB
hold on; %Funcion que nos permite añadir otro grafico
grid on; %Activamos cuadricula en el grafico
plot(F,dB,'linewidth',3,'Color','blue');%graficamos lo solicitado
xlabel('Frequencia [Hz]')%nombre del eje x
ylabel('Magnitud [dB/Hz]')%nombre del eje y
title('PSD');%titulo de la grafica
legend('Periodograma(Ventana rectangular)','PSD verdadera')%ponemos
leyenda
%(identificacion)a nuestras graficas

1
Published with MATLAB® R2018b

2
% Proyecto 6 parte 4
clear all %Eliminamos todas las variables en memoria
close all %Cerramos todas las ventanas
clc %Limpiamos la consola
Fs=1;%damos el valor a nuestra frecuencia de muestro
A = [1 -2.7607 3.8106 -2.6535 0.9238];%digitamos los valores del
vector A
%del proceso AR
B = 1;%damos el valor al coeficiente del proceso AR
rng default%comando para calcular la reproducibilidad de los
resultados
x = randn(1000,1);%creamos un vector de valores aleatorios
y = filter(1,A,x);%implementamos para usar la ecu en diferencias
[pxx,w] = periodogram(y,hamming(length(y)),length(y),Fs);%calculamos
el
%periodograma con una ventana de hamming
plot(w,10*log10(pxx),'Color','yellow')%graficamos lo solicitado
[H,F] = freqz(B,A,[],Fs);%calculamos la respuesta en frecuencia de un
%sistema LTI
dB=20*log10(abs(H));%calculamos los valores en dB
hold on; %Funcion que nos permite añadir otro grafico
grid on; %Activamos cuadricula en el grafico
plot(F,dB,'linewidth',3,'Color','green');%graficamos lo solicitado
xlabel('Frequencia [Hz]')%nombre del eje x
ylabel('Magnitud [dB/Hz]')%nombre del eje y
title('PSD');%titulo de la grafica
legend('Periodograma(Ventana de Hamming)','PSD verdadera')%ponemos
leyenda
%(identificacion)a nuestras graficas

1
Published with MATLAB® R2018b

2
% Proyecto 6 parte 4
clear all %Eliminamos todas las variables en memoria
close all %Cerramos todas las ventanas
clc %Limpiamos la consola
Fs=1;%damos el valor a nuestra frecuencia de muestro
A = [1 -2.7607 3.8106 -2.6535 0.9238];%digitamos los valores del
vector A
%del proceso AR
B = 1;%damos el valor al coeficiente del proceso AR
rng default%comando para calcular la reproducibilidad de los
resultados
x = randn(1000,1);%creamos un vector de valores aleatorios
y = filter(1,A,x);%implementamos para usar la ecu en diferencias
[pxx,w] = pwelch(y,blackman(120),100,100,Fs);%calculamos el
%periodograma de welch
plot(w,10*log10(pxx),'Color','red')%graficamos lo solicitado
[H,F] = freqz(B,A,[],Fs);%calculamos la respuesta en frecuencia de un
%sistema LTI
dB=20*log10(abs(H));%calculamos los valores en dB
hold on; %Funcion que nos permite añadir otro grafico
grid on; %Activamos cuadricula en el grafico
plot(F,dB,'linewidth',3,'Color','black');%graficamos lo solicitado
xlabel('Frequencia [Hz]')%nombre del eje x
ylabel('Magnitud [dB/Hz]')%nombre del eje y
title('PSD');%titulo de la grafica
legend('Periodograma de Welch','PSD verdadera')%damos una
identificacion
%a la grafica

1
Published with MATLAB® R2018b

2
Señal tbodyacc_t
clc
clear all
close all

load('tbodyacc_t.mat');

% aplicacion del periodograma de welch


Fs=50;
[pxx, w] = pwelch(tbodyacc_t, blackman(1000), 99, 5000 ,Fs);
PxxdB=10*log10(pxx);
[pk,MaxFreq] = findpeaks(PxxdB,'NPeaks',1,'SortStr','descend');

% grafica de la señal aplicando la ventana de Blackman


plot(w,PxxdB)
hold on
plot(w(MaxFreq),pk,'or')
title('Senial aplicando la ventana de Blackman ')
ylabel('Magnitud [db/Hz]')
xlabel('frecuencia [Hz]')
% Obtencion de la velocidad estimada

w(MaxFreq);

velocidad=round(min(w(MaxFreq))*60);

sprintf("La velocidad es: "+ num2str(velocidad) + " pasos/minuto")

Error using evalmxdom>instrumentAndRun (line 109)


Error: Invalid text character. Check for unsupported symbol, invisible
character, or pasting of non-ASCII characters.

Error in evalmxdom (line 21)


[data,text,laste] =
instrumentAndRun(file,cellBoundaries,imageDir,imagePrefix,options);

Error in publish

Error in mdbpublish (line 55)


outputPath = publish(file, options);

Published with MATLAB® R2018b

1
Calculo de la velocidad corriendo
clc
clear all
close all

load('Tabla_total_seniales_raw.mat') %Cargamos la tabla dada


para realizar los calculos

i = 1; %Inicializacion de la matriz velocidad a generar

for id = 201:1:232 %bucle en el que hacemos las


iteraciones necesarias para realizar los calculos de velocidad
corriento y caminadno
%Los indices son en funcion de los ID
de cada persona
if(id ~= 218 & id ~= 231) %Condicion necesaria, dado que
los ID 218 y 131 no existe en la tabla
aux = find(Tabla_total_seniales_raw.ID == id);
%Busqueda de la posicion en la tabla de los ID ingresados
t_non_uniform = Tabla_total_seniales_raw.t{aux(4),1};
%Extracción del vector tiempo te la tabla
sig_non_uniform = Tabla_total_seniales_raw.tgt{aux(4),1};
%Extracción del vector aceleracion te la tabla

Fs = 50; %Frecuencia de muestreo

%Presocesamiento de las señales de la tabla


[t, gravacc_t, bodyacc_t]=
preprocessing(t_non_uniform,sig_non_uniform,Fs);

%Estimacion espectral por medio del metodo de Welch


[pxx, w] = pwelch(bodyacc_t, blackman(1000), 99, 5000 ,Fs);

PxxdB=10*log10(pxx); %Realización del cambio de unidad


a decibeles

%Por medio de la funcion findpeaks buscamos los picos en las


%muestras. Los picos mas altos se consideran un paso
[pk,MaxFreq] =
findpeaks(PxxdB,'NPeaks',1,'SortStr','descend');

w(MaxFreq);

velocidad(i) = round(min(w(MaxFreq))*60); %Guardamos la


velocidad de cada estudiante en una matriz
i = i+1; %Aumento del indice de la matriz
Velocidad

1
end
end

%Graficas
h = histogram(velocidad) %Histograma del numero de personas en
funcion de la velocidad en pasos/minuto

title('Histograma de Velocidad Corriendo en pasos/min')


ylabel('Numero de personas')
xlabel('Velocidad en pasos/minuto')

h =

Histogram with properties:

Data: [1×30 double]


Values: [1 0 1 3 12 13]
NumBins: 6
BinEdges: [60 80 100 120 140 160 180]
BinWidth: 20
BinLimits: [60 180]
Normalization: 'count'
FaceColor: 'auto'
EdgeColor: [0 0 0]

Use GET to show all properties

2
Published with MATLAB® R2018b

3
Calculo de la velocidad caminando
clc
clear all
close all

load('Tabla_total_seniales_raw.mat') %Cargamos la tabla dada


para realizar los calculos

i = 1; %Inicializacion de la matriz velocidad a generar

for id = 201:1:232 %bucle en el que hacemos las


iteraciones necesarias para realizar los calculos de velocidad
corriento y caminadno
%Los indices son en funcion de los ID
de cada persona
if(id ~= 218 & id ~= 231) %Condicion necesaria, dado que
los ID 218 y 131 no existe en la tabla
aux = find(Tabla_total_seniales_raw.ID == id);
%Busqueda de la posicion en la tabla de los ID ingresados
t_non_uniform = Tabla_total_seniales_raw.t{aux(3),1};
%Extracción del vector tiempo te la tabla
sig_non_uniform = Tabla_total_seniales_raw.tgt{aux(3),1};
%Extracción del vector aceleracion te la tabla

Fs = 50; %Frecuencia de muestreo

%Presocesamiento de las señales de la tabla


[t, gravacc_t, bodyacc_t]=
preprocessing(t_non_uniform,sig_non_uniform,Fs);

%Estimacion espectral por medio del metodo de Welch


[pxx, w] = pwelch(bodyacc_t, blackman(1000), 99, 5000 ,Fs);

PxxdB=10*log10(pxx); %Realización del cambio de unidad


a decibeles

%Por medio de la funcion findpeaks buscamos los picos en las


%muestras. Los picos mas altos se consideran un paso
[pk,MaxFreq] =
findpeaks(PxxdB,'NPeaks',1,'SortStr','descend');

w(MaxFreq);

velocidad(i) = round(min(w(MaxFreq))*60); %Guardamos la


velocidad de cada estudiante en una matriz
i = i+1; %Aumento del indice de la matriz
Velocidad

1
end
end

%Graficas
h = histogram(velocidad) %Histograma del numero de personas en
funcion de la velocidad en pasos/minuto

title('Histograma de Velocidad Caminando en pasos/min')


ylabel('Numero de personas')
xlabel('Velocidad en pasos/minuto')

h =

Histogram with properties:

Data: [1×30 double]


Values: [1×46 double]
NumBins: 46
BinEdges: [1×47 double]
BinWidth: 1
BinLimits: [72.5000 118.5000]
Normalization: 'count'
FaceColor: 'auto'
EdgeColor: [0 0 0]

Use GET to show all properties

2
Published with MATLAB® R2018b

3
CAMINAR
clc
clear all
close all

%Obtenemos la señal de los archivos .cvs}


% Archivo csv de la señal caminando

C = dlmread('raw_219_3.csv'); % archivo original csv


v_tiempo = C(:,1) - 12; % vector del tiempo sin procesar
m_aceleracion = C(:,5); % vector modulo de la aceleracion sin procesar

% grafica de la señal sin procesar


figure(1)
plot(v_tiempo,m_aceleracion)
xlim([0 120]) % limitacion del tiempo de 0 a 120 segundos
ylabel('TgF')
xlabel('t(s)')
title('Grafica de la actividad caminando (sin procesar))')

t_non_uniform= v_tiempo;
sig_non_uniform=m_aceleracion;
Fs = 50; %Frecuencia de muestreo

% funcion para procesar la señal


[t, gravacc_t, bodyacc_t]=
preprocessing(t_non_uniform,sig_non_uniform,Fs);

%Grafica de la señal procesada


figure(2)

plot(t,bodyacc_t)
title('Senial Procesada')
xlim([0 120])
ylabel('TgF')
xlabel('t(s)')

% aplicacion del periodograma de welch

[pxx, w] = pwelch(bodyacc_t, blackman(1000), 99, 5000 ,Fs);


PxxdB=10*log10(pxx);
[pk,MaxFreq] = findpeaks(PxxdB,'NPeaks',1,'SortStr','descend');

figure(3)
% grafica de la señal aplicando la ventana de Blackman con el
periodograma
% de Welch

plot(w,PxxdB)

1
hold on
plot(w(MaxFreq),pk,'or')
title('Senial aplicando la ventana de Blackman ')
ylabel('Magnitud [db/Hz]')
xlabel('frecuencia [Hz]')
% Obtencion de la velocidad estimada

w(MaxFreq);

velocidad=round(min(w(MaxFreq))*60);

sprintf("La velocidad es: "+ num2str(velocidad) + " pasos/minuto")

ans =

"La velocidad es: 79 pasos/minuto"

2
3
Published with MATLAB® R2018b

4
Trotando
clc
clear all
close all

%Obtenemos la señal de los archivos .cvs}


% Archivo csv de la señal caminando

C = dlmread('raw_219_4.csv'); % archivo original csv


v_tiempo = C(:,1) - 7; % vector del tiempo sin procesar
m_aceleracion = C(:,5); % vector modulo de la aceleracion sin procesar

% grafica de la señal sin procesar


figure(1)
plot(v_tiempo,m_aceleracion)
xlim([0 120]) % limitacion del tiempo de 0 a 120 segundos
ylabel('TgF')
xlabel('t(s)')
title('Grafica de la actividad caminando (sin procesar))')

t_non_uniform= v_tiempo;
sig_non_uniform=m_aceleracion;
Fs = 50; %Frecuencia de muestreo

% funcion para procesar la señal


[t, gravacc_t, bodyacc_t]=
preprocessing(t_non_uniform,sig_non_uniform,Fs);

%Grafica de la señal procesada


figure(2)

plot(t,bodyacc_t)
title('Senial Procesada')
xlim([0 120])
ylabel('TgF')
xlabel('t(s)')

% aplicacion del periodograma de welch

[pxx, w] = pwelch(bodyacc_t, blackman(1000), 99, 5000 ,Fs);


PxxdB=10*log10(pxx);
[pk,MaxFreq] = findpeaks(PxxdB,'NPeaks',1,'SortStr','descend');

figure(3)
% grafica de la señal aplicando la ventana de Blackman
plot(w,PxxdB)
hold on
plot(w(MaxFreq),pk,'or')
title('Senial aplicando la ventana de Blackman ')

1
ylabel('Magnitud [db/Hz]')
xlabel('frecuencia [Hz]')
% Obtencion de la velocidad estimada

w(MaxFreq);

velocidad=round(min(w(MaxFreq))*60);

sprintf("La velocidad es: "+ num2str(velocidad) + " pasos/minuto")

ans =

"La velocidad es: 157 pasos/minuto"

2
3
Published with MATLAB® R2018b

S-ar putea să vă placă și