CURSO: TEMA:
COMUNICACIÓN DIGITAL
ANÁLISIS DE SEÑALES CON EL USO DE MATLAB
u OCTAVE
10/11/21
GRUPO: PROFESOR:
Wilbert Chávez Irazábal
Filter
Sintaxis
y = filter(b,a,x)
Descripción
y = filter(b,a,x) filtra
los datos de entrada x utilizando una función de transferencia
racional definida por los coeficientes del numerador y del
denominador b y a respectivamente.
Si a(1) no es igual a 1, entonces, filter normaliza los coeficientes del filtro dividiendo
cada uno entre a(1). Por lo tanto, a (1) debe ser distinto de cero.
Si x es un vector, entonces, filter devuelve los datos filtrados como un vector del mismo
tamaño que x.
Si x es una matriz, entonces, filter actúa a lo largo de la primera dimensión y devuelve
los datos filtrados para cada columna.
Si x es una matriz multidimensional, entonces el comando filter actúa a lo largo de la
primera dimensión de la matriz cuyo tamaño no es igual a 1.
Designfilt
Sintaxis
d = designfilt (resp, Name, Value)
designfilt(d)
Descripción
d = designfilt(resp,Name,Value) diseña un objeto, con el tipo de respuesta
digitalfilterdres
Especifique el filtro aún más utilizando un conjunto de pares name,value los conjuntos
de especificaciones permitidos dependen del tipo de respuesta y consisten en
combinaciones de los siguientes resp
FVTool
Filtfilt
2
Sintaxis
y = filtfilt(b,a,x)
Descripción
y = filtfilt(b,a,x) realiza
el filtrado digital de fase cero procesando los datos de entrada,
tanto en las direcciones hacia delante como en las direcciones inversa. x Después de
filtrar los datos en la dirección de avance, invierte la secuencia filtrada y la vuelve a
ejecutar a través del filtro.filtfilt El resultado tiene las siguientes características
Distorsión de fase cero.
Una función de transferencia de filtro igual a la magnitud cuadrada de la
función de transferencia de filtro original.
Un orden de filtro que es el doble del orden del filtro especificado por y .ba
Freqz
Sintaxis
[h,w] = freqz(b,a,n)
Descripción
[h,w] = freqz(b,a,n) devuelve
el vector de respuesta de frecuencia de punto y el vector de
frecuencia angular correspondiente para el filtro digital con coeficientes de función de
transferencia almacenados en y .nhwba
Randn
Sintaxis
X = randn
X = randn(n)
Descripción
X = randn devuelve un escalar aleatorio dibujado de la distribución normal estándar
X = randn(n) devuelve una matriz n-by-n de números aleatorios normalmente
distribuidos
4.3. Consultar sobre la sintaxis de lazos de repetición (for, while) y de condición (if,
switch) usados en MatLab (equivalente en OCTAVE).
3
if: esta funcion se encarga de evaluar una expresion y ejecuta un grupo de
declaraciones cuando la expresion es verdadera.
switch: esta funcion se encarga de evaluar una expresion y elige ejecutar uno de varios
grupos de declaraciones.
4.5. Graficar en el tiempo el producto de funciones g31 y g32 en los siguientes casos:
g 31(t )=a1sin ( 2∗π ∗f 1∗t )
g 32(t )=¿ Una función diente de sierra simétrica periódica con amplitud A,
periodo T=1/f 2
clc
clear
T = 20
%Amplitud
A=5
%Período
Wo = 2 * pi / T; %Frecuencia fundamental
%Ancho de la señal
x = 0 : 0.01 : T/4 ;
y = A*sawtooth(2*pi*2*x);
f1=1;
g31=sin(2*pi*f1*x);
subplot(2,2,1)
plot(x,y);
grid on
4
grid on
subplot(2,2,2)
plot(x,g31)
grid on
subplot(2,1,2)
gxy=g31.*y;
plot(x,gxy)
5
%CODIGO EN MAT LAP
clc
clear
T = 1;
%Amplitud
A = 5;
%Período
Wo = 2 * pi / T;
%Frecuencia fundamental
%Ancho de la señal
x = 0 : 0.01 : T/4 ;
y( 1 : size( x, 2 ) ) = 2*A/3+((4*A)/(3*T))*x;
x1 = T/4 : 0.01 : T/2;
y1( 1 : size( x1, 2 ) ) = 0;
x2 = T/2 : 0.01 : 3*T/4;
y2( 1 : size( x2, 2 ) ) = A-((4*A)/(3*T))*x;
x3 = 3*T/4 : 0.01 : T;
y3( 1 : size( x3, 2 ) ) = 0;
x = [x x1 x2 x3];
y = [y y1 y2 y3 ];
plot(x,y);
6
6.1. Crear los siguientes filtros, mostrar su respuesta de frecuencia: Filtro pasa
bajos, con:
7
num=[0 1/(R*C)]
den=[1 1/(R*C)]
G11=tf(num,den)
%bode(G11);
grid on
%señal de salida
figure(1)
subplot(2,1,2)
lsim(G11,g,x)
grid on
8
Filtro Pasa Altos:
%CODIGO MAT LAP:
clc
clear
x=0:0.0001:100;
f=10*sin(x);
d=wgn(1,size(x,2),5);
g=f+d;
grid on
subplot(2,1,1)
plot(x,g)
grid on
C=100e-9
R=800
%-pasaalta ;G=(s)=(s)/(s+1/RC)
num1=[1 0];
den1=[1 1/(R*C)];
G12=tf(num1,den1)
%bode(G12)
grid on
%señal de salida
figure(1)
subplot(2,1,2)
lsim(G12,g,x)
grid
9
6.3 Implementar la serie de Fourier y graficarla en el dominio del tiempo dentro de
un archivo .m (su equivalente en octave), a partir de la función periódica SENOIDAL,
TRIANGULAR y CUADRADA. Además, mostrar el espectro en frecuencia y la densidad
espectral de potencia.
FUNCIÓN SENOIDAL
4A
f ( t )= sen(ω 0 t )
π
Código en Matlab
%% FUNCION SENOIDAL
% GRÁFICA EN EL TIEMPO DE LA SEÑAL
Fs=1000; % Frecuencia de muestreo en Hz
Ts=1/Fs; % Periodo de muestreo en seg.
L=300; % Muestras
A=1; % Amplitud
s1=((4*A)/pi)*sin(2*pi*f*t);
subplot(2,1,1),plot(t,s1,'b');
xlabel ("Tiempo (segundos)");
ylabel ("AMPLITUD");
title ("ONDA SENOIDAL");
grid on
%% GRÁFICA EN LA FRECUENCIA DE LA SEÑAL
Y=fft(s1-0.24);
P1=2.*(abs(Y(1:L/2)/L));
f1=Fs.*(0:(L/2)-1)./L; % Vector de frecuencias
subplot(2,1,2)
plot(f1,P1,'r')
grid on
xlabel ("Frecuencia (Hz)");
ylabel ('Amplitud')
title ("ESPECTRO DE UNA ONDA SENOIDAL");
10
FUNCIÓN TRIANGULAR
2A
f ( t )= t , 0< t<T /2
T
−2 A
f ( t )= t ,T /2<t <T
T
ω 0=2 π /T
11
T/2
2
a 0= ∫ f (t )dt
T 0
T /2
2
a 0=
T ( ∫ 2TA tdt )
=
A
2
0
A
a 0=
2
Para evaluar a n y bn , hacemos uso de las integrales:
T/2
4
a n= ∫ f ( t ) cosn ω0 tdt
T 0
T/2
4
a n=
T
∫ 2TA tcosnω 0 tdt
0
8A 1 1
tsinn ω0 t T /2
a n= 2 2
T n ω0 2
[
cosn ω0 t+
n ω 0 0 ]
8A 1 nω T 1 T nω T 1 1
a n= 2 2
T n ω0 2
[
cos ( 0 )+
2
( )sin ( 0 )− 2 2 cosn ω0 0−
n ω0 2 2 n ω0 n ω0
0 sinn ω0 0
]
8A 1 nω T 1 T nω T 1
a n= 2 2
T n ω0 2
[
cos ( 0 )+
2 n ω0
( ) sin ( 0 )− 2 2
2 2 n ω0 ]
nω T nω T
a n=
8A
2 2
1
T n ω0 2
[ (
cos ( 0 )−1 +
2
1 T
( )sin ( 0 )
n ω0 2 2 ) ]
Siendo ω 0=2 π /T
8A 1 1 T
a n=
T2
[( n2
2π
T
2
)
( cosπn−1 )+
n
T
( )sinπn
2π 2
]
Recordar
sinπn=0
cosπn=−1 ; si n es impar
cosπn=1 ; si n es par
8A 1 1
a n=
T2
[( n2
2π
T
2
)
( cosπn−1 )+
n
2π
T
( 0)
]
Calculamos cuando
cosπn=−1 ; si n es impar
12
8A 1
a n=
T2
[(
n2
2π
T
2
)
(−1−1 )
]
−4 A
a n= ; n=¿2 n−1
n2 π2
−4 A
a n= 2 2
(2 n−1) π
b n=0
Reemplazando
∞
A −4 A
f ( t )= +∑ (
[
2 n=1 ( 2 n−1 )2 π 2 ]
cos (2 n−1) ω0 t+ 0 sinn ω0 t)
CODIGO EN MATLAB
%% FUNCION TRIANGULAR
% GRÁFICA EN EL TIEMPO DE LA SEÑAL
Fs=1000; % Frecuencia de muestreo en Hz
Ts=1/Fs; % Periodo de muestreo en seg.
L=300; % Muestras
A=1; % Amplitud
arm=20; % Número de armónicos a sumar
s1=A/2; % Componente continua
s3=(4*A)/(pi^2);
for n1=1:1:arm
p1=(1/(2*n1-1)^2)*cos((2*n1-1)*2*pi*f*t);
s1=s1-s3*p1;
end;
subplot(2,1,1),plot(t,s1,'b');
13
xlabel ("Tiempo (segundos)");
ylabel ("AMPLITUD");
title ("ONDA TRIANGULAR");
grid on
%% GRÁFICA EN LA FRECUENCIA DE LA SEÑAL
Y=fft(s1-0.24);
P1=2.*(abs(Y(1:L/2)/L));
f1=Fs.*(0:(L/2)-1)./L; % Vector de frecuencias
subplot(2,1,2)
plot(f1,P1,'r')
grid on
xlabel ("Frecuencia (Hz)");
ylabel ('Amplitud')
title ("ESPECTRO DE UNA ONDA TRIANGULAR");
14
∞
4A sen (( 2n−1)ω 0 t )
f ( t )= ∑
π n=1 2 n−1
%% FUNCION CUADRADA
% GRÁFICA EN EL TIEMPO DE LA SEÑAL
Fs=1000; % Frecuencia de muestreo en Hz
Ts=1/Fs; % Periodo de muestreo en seg.
L=300; % Muestras
A=1; % Amplitud
arm=20; % Número de armónicos a sumar
s1=0; % Componente continua
s3=(4*A)/pi;
for n1=1:1:arm
p1=(1/(2*n1-1))*sin((2*n1-1)*2*pi*f*t);
s1=s1+s3*p1;
end;
subplot(2,1,1),plot(t,s1,'b');
xlabel ("Tiempo (segundos)");
ylabel ("AMPLITUD");
title ("ONDA CUADRADA");
grid on
%% GRÁFICA EN LA FRECUENCIA DE LA SEÑAL
Y=fft(s1-0.24);
P1=2.*(abs(Y(1:L/2)/L));
f1=Fs.*(0:(L/2)-1)./L; % Vector de frecuencia
subplot(2,1,2)
plot(f1,P1,'r')
grid on
xlabel ("Frecuencia (Hz)");
ylabel ('Amplitud')
title ("ESPECTRO DE UNA ONDA CUADRADA");
15
7. Realizar el cálculo de la serie de Fourier para la función indicada usando
propiedades y graficar dicha serie en el dominio del tiempo, como su espectro de
frecuencia, usando un archivo .m (equivalente en OCTAVE).
Sea
T
t 1= , A=5 ,T =12
3
T
A 0¿ t<
3
F=
T T
0 <t<
3 6 16
Hallando el coeficiente ao :
T/3 T
ao= ∫
6t
1 f ( t ) dt= 1
T 0
1
T [∫
0
¿
T /3
]
1
Adt + ∫ 0 dt = ¿ ¿
T
A
∗T
T 5
¿ =
3 3
Hallando el coeficiente an:
2
an= ¿
T
A 2 nπ
an=
nπ
[ sen
3 ( )
]
A 2 nπ
bn=
nπ ( )
[−cos
3
+1]
5 2 nπ
bn= [−cos (
3 )
+1]
nπ
Sabemos que:
∞
2nπt 2 nπt
f ( t )=a0 +∑ an cos
n=1
( T ) (
+b n sen
T )
17
t=0:0.01:24;%Definimos el intervalo de tiempo
N=100 % Número de armónicos
sum=0;
T=24;
for n=1:1:N % Bucle para la sumatoria de los armónicos
An=(5/(pi*n))*(sin((2*pi*n)/3));%Coeficientes de Fourier
Bn=(5/(pi*n))*(-cos((2*pi*n)/3)+1);%Coeficientes de Fourier
sum=sum+An*cos((n*pi*t)/6)+Bn*sin((n*pi*t)/6)% Sumatoria de Serie
armonicos para la componente ca
end
sumx=sum+5/3; % Suma de ca +cd
plot(t,sumx)
grid on
title('Series de Fourier')
Para 10 armónicos
18
Para 100 armónicos
19
Espectro de frecuencias
Analizando
Si T (periodo de la señal) es variable y τ (tau) es fijo, se puede apreciar que el valor de
la amplitud del espectro se reduce conforme aumenta el periodo.
Para:
T=6 y t1=3
T=10 y t1=3
21
T=14 y t1=3
7.3 En base al análisis del literal anterior qué sucede si T (periodo) es fijo y τ (tau)
variable (creciente)?
Código en Matlab
t=0:0.01:24;%Definimos el intervalo de tiempo
22
N=100 % Número de armónicos
sum=0;
T=10;
for n=1:1:N % Bucle para la sumatoria de los armónicos
t1=5;
A0=5*t1/T
An=(5/(pi*n))*(sin((2*pi*n*t1)/T));%Coeficientes de Fourier
Bn=(5/(pi*n))*(-cos((2*pi*n*t1)/T)+1);%Coeficientes de Fourier
sum=sum+An*cos((n*2*pi*t)/T)+Bn*sin((n*2*pi*t)/T)% Sumatoria de
Serie armonicos para la componente ca
end
sumx=sum+A0; % Suma de ca +cd
plot(t,sumx)
grid on
title('Series de Fourier')
Analizando
Si T (periodo de la señal) es fijo y τ (tau) es variable, se puede apreciar que el valor de
la amplitud del espectro aumenta conforme aumenta el tau.
T=10 y t1=5
T=10 y t1=8
23
T=10 y t1=12
7.2. Analizando el espectro del tren de pulsos del numeral 7.1, que sucede si τ es fijo y
T variable (creciente)?
Si τ es fijo y T es variable o creciente, el ciclo de trabajo o duty cycle se
vuelve decreciente debido a que:
7.3. En base al analisis del literal anterior que sucede si T es fijo y τ variable
(creciente)?
Si τ es variable o creciente y T es fijo, el ciclo de trabajo o duty cycle se vuele creciente
debido a que:
7.4. Compare la densidad espectral de potencia y el espectro de una senal, cual es la
diferencia entre las dos?, y cual es la utilidad de cada uno?
La densidad espectral de potencia es una funcion matematica la cual nos informa de que
manera esta distribuida la potencia de la senal analizada sobre las distintas frecuencias
de las que esta formada; siendo una de sus utilidades identificar periodicidades
escondidas en una funcion de variable continua o de variable discreta.
Mientras que el espectro de una senal es la descripcion de la senal en el dominio de la
frecuencia.
CONCLUSIONES
Los filtros son muy importantes porque de acuerdo al tipo de filtro pueden impedir el paso de
cierta frecuencia para poder eliminar ruido de una señal y atenuarla.
24
25