Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

1

TALLER 3
Alejandro Ramirez, Andres Riaño, David Ropero, Elkin Zapata, Hector Rodriguez,
Oscar Rojas, Miguel Soto
Departamento de Ingeniería Mecánica y Mecatrónica
Universidad Nacional de Colombia
aleramirezgo, afrianos, droperol, ezapatat, herodriguezv, osrojasr, msotol
8 de junio de 2023

I 5.21

a. x [n] = u[n − 2] − u[n − 6]


R∞
√1 θ (n − 2) − θ (n − 6))e iωn dn
(2π ) −∞
2iω (−1+e4iω )
= − ie √ 2πω

b. x [n] = ( 21 )−n u[−n − 1]


R∞ 1 −n
√1 θ (−n − 1))eiωn dn
(2π ) −∞ 2
= − √sen (ω )+icos(ω )
2π (2ω −2ilog(2))

c. x [n] = ( 13 )|n| u[−n − 2]


R∞ 1 |n|
√1 − ∞ 3 θ (−n − 2))eiωn dn
(2π )
−2iω
= − 9√2π (ieω −ilog(3))

d. x [n] = 2n sen( π4 )n)u[−n]


R∞
√1 2n sen π4 n)θ (−n))eiωn dn
(2π ) −∞
= − 2√π (log1(2)+iω )2

e. x [n] = ( 12 )|n| cos( π8 (n − 1))


R∞
√1 (( 1 )|n| cos( π8 (n − 1)))eiωn dn
(2π ) −∞ 2
q  
2 1 1− i
= 32 π log (2) cos( π8 ) + isen( π8 ) (64ω 2 −16πω +π 2 +64log2 (2))
+ √
( 2(64ω 2 +16πω +π 2 +64log2 (2)))

n, −3 ≤ n ≤ 3
f. x [n] =
0, con otro valor
∑3n=−3 n ∗ e jωn = e jω ∗ (−3e3 − 2e2 − e + e−1 + 2e−2 + 3e−3 )
g. x [n] = sen( π2 n) + cos(n)
ja − ja e ja +e− ja
sen( a) = e −2je .cos( a) = 2 .T = 2π
= 2j ∗ (e j 2 n − e− j 2 n ) + 2π

∗ (e jn + e− jn )
π π
x [n] = sen( π2 n) + cos(n) 2
2

F (e jωo n ) = δ(ω − ωo )
F ( x [n]) = πj ∗ (δ(ω − π2 ) − δ(ω − π2 )) + π ∗ (δ(ω − 1) − δ(ω + 1))

h. x [n] = sen( 5π 7π
3 n ) + cos ( 3 n )
sen( a) = sen( a ± 2π )
cos( a) = cos( a ± 2π )
−π j π3 n
− e− j 3 n ) + ∗ (e j 3 n + e− j 3 n )
π π π
x [n] = sen( 5π 7π 2π
3 n ) + cos ( 3 n ) = sen ( 3 n ) + cos ( 3 n ) = 2j ∗ ( e
π 2π
2
F ( x [n]) = πj ∗ (δ(ω − π3 ) − δ(ω − π3 )) + π ∗ (δ(ω − π3 ) − δ(ω + π3 ))
i. x [n] = x [n − 6], y x [n] = u[n] − u[n − 4] para 0 ≤ n ≤ 5
T = 6. 2∗ π
2∗ π 2∗ π 1− e − j
aK = N1 ∗ ∑5n=0 x [n] ∗ e− jωkn 0 61 ∗ ∑5n=0 x [n] ∗ e− j 6 kn = 16 ∗ ∑4n=0 x [n] ∗ e− j 6 kn = 1
6 ∗[ 2∗ π
6 n
]
1− e − j 6 n ∗ K n
2∗ π
1− e − j
F ( x [n]) = 2π
6 ∗ ∑∞
n=−∞ [
6
− j 2∗6π
n
/δ(ω − 2π
6 ) − 2π ∗|
1− e n ∗ Kn

j. x [n] = (n − 1)( 13 )|n|


x [n] = (n − 1)( 13 )|n| = n( 13 )|n| − 1( 31 )|n|
8
1− a2
F (( 31 )|n| ) = 1−2a∗cos(ω )+ a2
= 10 − 2 ∗9cos(ω ) = 4
5−3∗cos(ω )
9 3
∗sen(ω )
F (( 13 )|n| ) = (5j12
−3∗cos(ω )) 2
∗sen(ω )
F ( x [n]) = 5−3∗cos 4
(ω )
− (5j12
−3∗cos(ω ))2
 
sen( πn
5 )
k. x [n] = πn cos( 7π
2 n)

π ∑∞

X (ω ) = l =−∞ δ ( ω − ω0 − 2lπ ) − δ ( ω + ω0 − 2lπ ), 0 ≤ |ω | ≤ W
0, W ≤ |ω | ≤ π

II 5.22



4 ≤ |ω | ≤ 4
π
1,
a. X (e jω ) = 3π
4 ≤ |ω | ≤ π , 0 ≤ |ω | < π
0, 4
sen( 3nπ
4 )
x [n] = πn = 43 senc( 3n
4 )

b. X (e jω ) = 1 + 3e− jω + 2e− j2ω − 4e− j3ω + e− j10ω

x [n] = δ[n] + 3δ[n − 1] + 2δ[n − 2] − 4δ[n − 3] + δ[n − 10]



c. X (e jω ) = e− 2 para − π ≤ ω ≤ π

x [n] = δ[n − 12 ]
d. X (e jω ) = cos2 ω + sen2 3ω

X (e jω ) = [ 21 (e jω + e− jω )]2 + [ 2j1 (e j3ω − e− j3ω )]2

jω e− jω 2 j3ω e− j3ω 2
X (e jω ) = ( e2 + 2 ) + (e2 − 2j )

e j2ω jω − jω e− j2ω e j6ω j3ω − j3ω e− j6ω


X (e jω ) = 4 + 2( e2 )( e 2 ) + 4 − 4 + 2( e j2 )( −ej2 ) + 4
3

e j2ω e0 e− j2ω e j6ω e0 e− j6ω


X (e jω ) = 4 + 2 + 4 − 4 + 2 + 4

e j2ω e− j2ω e j6ω e− j6ω


X (e jω ) = 4 + 4 − 4 + 4 +1

x [n] = 14 δ[n + 2] + 14 δ[n − 2] − 14 δ[n + 6] + 41 δ[n − 6] + δ[n]

e. X (e jω ) = ∑∞ k
k =−∞ (−1) δ ( ω − 2 k )
π

x [n] = ∑3k=0 (−1)k e jk(π/2)n = 1 − e jkn/2 + e jxn − e j3xn/2

e− jω − 51
f. X (e jω ) = 1− 15 e− jω

x [n] = e− jk ∑∞ n − jwn − (1/5) ∞ (1/5)n e− jwn


n=0 (1/5) e ∑ n =0

=5 ∑∞ n − jwn − (1/5) ∞ (1/5)n e− jwn


n=1 (1/5) e ∑ n =0

X (e jω ) = (1/5)n−1 u[n − 1] − (1/5)n+1 u[n]


1− 13 e− jω
g. X (e jω ) = 1 − jω 1 −2jω
1− 4 e −8e

2 7
X (e jω ) = ( 1− 1 9e− jwn ) + ( 1+ 1 9e− jwn )
2 2

x [n] = 29 ( 12 )n u[n] + 79 (− 41 )n u[n]


1−( 13 )6 e− j6ω
h. X (e jω ) = 1− 31 e− jω

X (e jω ) = 1 + 13 e− jω + 1 − j2ω
32
e + 1 − j3ω 1 − j4ω 1 − j5ω
33
e 34
e 35
e

x [n] = δ[n] + 31 δ[n − 1] + 91 δ[n − 2] + 1


27 δ [ n − 3] + 1
81 δ [ n − 4] + 1
243 δ [ n − 5]

III

Obtener al menos 1 de las señales de su proyecto adquirida con Arduino y usando Matlab obtener la transformada de
Fourier.
El siguiente código es el usado para la obtención de datos, como se dejó un tiempo de casi 20 horas, se usó un SD para
guardar la información, para luego procesarla en MATLAB

IV Código en C++

1 # include <Adafruit_Sensor .h>


2 # include <DHT.h>
3 # include <DHT_U .h>
4

4 # include <Wire.h>
5 # include <BH1750 .h>
6 # include <SPI.h>
7 # include <SD.h>
8 # include <WiFi.h>
9 # include <ESPAsyncWebSrv .h>
10 # include <TimeLib .h>
11

12 # define DHTPIN 4 // Pin al que esta conectado el sensor DHT11


13 # define DHTTYPE DHT11 // Tipo de sensor ( DHT11 o DHT22 )
14

15 DHT_Unified dht(DHTPIN , DHTTYPE );


16 BH1750 lightMeter ;
17

18 File dataFile ;
19 int fileNumber = 0;
20

21 void setup () {
22 Serial .begin (115200) ;
23 dht.begin ();
24

25 Wire.begin (21 , 22); // Iniciar la comunicacion I2C


26 lightMeter . begin ( BH1750 :: ONE_TIME_HIGH_RES_MODE );
27

28 // Inicializar la tarjeta microSD


29 if (!SD.begin (SS)) {
30 Serial . println (" Error ␣al␣ inicializar ␣la␣ tarjeta ␣ microSD ");
31 return ;
32 }
33

34 // Comprobar si el archivo de datos ya existe


35 while (SD. exists ( getFileName ( fileNumber ))) {
36 fileNumber ++;
37 }
38

39 // Abrir el archivo de datos en modo de escritura


40 dataFile = SD.open( getFileName ( fileNumber ), FILE_WRITE );
41 if (! dataFile ) {
42 Serial . println (" Error ␣al␣ abrir ␣el␣ archivo ");
43 return ;
44 }
45

46 // Escribir la cabecera en el archivo


47 dataFile . println (" Timestamp \ tTemperatura ␣(C)\ tHumedad ␣( %)\ tLuminosidad ␣(lux)"
,→ );
48

49 dataFile .close ();


50 }
51

52 void loop () {
53 sensors_event_t event ;
5

54 dht. temperature (). getEvent (& event );


55 float temperature = event . temperature ;
56 dht. humidity (). getEvent (& event);
57 float humidity = event . relative_humidity ;
58

59 float lux = lightMeter . readLightLevel ();


60

61 // Obtener el timestamp actual


62 String timestamp = String (hour ()) + ":" + String ( minute ()) + ":" + String (
,→ second ());
63

64 // Abrir el archivo en modo de adjuntar , agregando al final


65 dataFile = SD.open( getFileName ( fileNumber ), FILE_WRITE );
66 if ( dataFile ) {
67 // Mover el puntero de escritura al final del archivo
68 dataFile .seek( dataFile .size ());
69

70 // Escribir los valores en el archivo con el timestamp


71 dataFile . print ( timestamp );
72 dataFile . print ("\t");
73 dataFile . print ( temperature );
74 dataFile . print ("\t");
75 dataFile . print ( humidity );
76 dataFile . print ("\t");
77 dataFile . println (lux);
78 dataFile . close ();
79

80 Serial . println (" Datos ␣ guardados ␣en␣el␣ archivo ");


81

82 // Imprimir los datos guardados en serie


83 Serial .print (" Timestamp :␣");
84 Serial .print ( timestamp );
85 Serial .print ("\ tTemperatura ␣(C):␣");
86 Serial .print ( temperature );
87 Serial .print ("\ tHumedad ␣( %):␣");
88 Serial .print ( humidity );
89 Serial .print ("\ tLuminosidad ␣(lux):␣");
90 Serial . println (lux);
91 } else {
92 Serial . println (" Error ␣al␣ abrir ␣el␣ archivo ");
93 }
94 lightMeter . configure ( BH1750 :: ONE_TIME_HIGH_RES_MODE );
95

96 delay (5*60*1000) ; // Esperar 5 minutos para la siguiente medida


97 }
98

99 String getFileName (int number ) {


100 return "/data" + String ( number ) + ".txt";
101 }

De los datos obtenidos con el siguiente código en Matlab se obtuvo la transformada de Fourier.
6

V Código en MATLAB

1 syms x y
2 y = -6*10^(12) *x^6 + 4*10^( -09) *x^5 - 1*10^( -06) *x^4 + 0.0001* x^3 - 0.0058* x^2
,→ + 0.0737* x + 16.293
3

4 f = matlabFunction (y)
5 t_vals = linspace (0 ,1225 ,246);
6 plot( DatosTemp )
7

8 f_vals = f( t_vals );
9 % Calcular la transformada de Fourier
10 F = fft( f_vals );
11

12 % Calcular la frecuencia correspondiente a cada coeficiente


13 N = length ( f_vals );
14 frequencies = (0:N -1) / ( t_vals (end)-t_vals (1));
15

16 % Graficar el espectro de frecuencias


17 stem( frequencies , abs(F));
18 xlabel (’Frecuencia ’);
19 ylabel (’Magnitud ’);
20 title (’Espectro ␣de␣ frecuencias ’);
21

22 % Si deseas visualizar solo las frecuencias positivas :


23 positive_frequencies = frequencies (1:N/2);
24 positive_F = F(1:N/2);
25 figure ;
26 stem( positive_frequencies , abs( positive_F ));
27 xlabel (’Frecuencia ’);
28 ylabel (’Magnitud ’);
29 title (’Espectro ␣de␣ frecuencias ␣( frecuencias ␣ positivas )’);

Y finalmente obtuvimos las siguientes gráficas:


Y sus respectivas representaciones de magnitud vs frecuencia:
7

Figura 1: Humedad vs Tiempo

Figura 2: Temperatura vs Tiempo


8

Figura 3: Mag. vs Frec. Humedad

Figura 4: Mag. vs Frec. Temperatura

You might also like