Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 INTRODUCCIÓN
2 EJERCICIO 1
Genere una secuencia de instantes de tiempo que parta de t=0s y llegue hasta t=0.25s
en intervalos de 1ms. Construya una función seno en esa base de tiempo de amplitud 1
y frecuencia 5Hz. Use plot para dibujar la forma de onda. Además, destaque cada
punto de la gráfica con *.
Por tanto, siendo estrictos, en MATLAB toda señal es discreta en tiempo, mientras que en
amplitud puede ser discreta (cuantizada) o continua (aunque limitada por la precisión
de los tipos numéricos). No obstante, si los intervalos temporales entre valores son
suficientemente pequeños y el rango temporal en el que se define la señal es
suficientemente amplio, la secuencia de valores empleada para representar la señal y
las operaciones realizadas para su análisis proporcionan una buena aproximación a los
resultados teóricos. En el caso más simple y frecuente, los valores se toman en instantes
equiespaciados, intervalo que no debe confundirse con el periodo de muestreo. De
momento, ignoraremos el efecto de la discretización de señales (utilizaremos intervalos
de tiempo suficientemente pequeños, de modo que los efectos sean despreciables).
Asimismo, la amplitud de las señales está sometida a una discretización que, dada la
precisión de los tipos numéricos empleados en MATLAB, podemos ignorar.
3 SEÑALES ESPECIALES.
Vamos a ver una posible forma de representar en MATLAB algunas señales analógicas
típicas.
>> t=-10:0.01:10;
>> f_escalon=[zeros(1,1000),ones(1,1001)];
>> plot(t,f_escalon);
>> t=-10:0.01:10;
>> f_pulso=[zeros(1,950),ones(1,101),zeros(1,950)];
>> plot(t,f_pulso);
>> f_sampling=sin(t)./t;
>> f_sinc=sinc(t);
>> plot(t,f_sinc);
>> t=-10:0.01:10;
>> f_impulso=[zeros(1,1000),1,zeros(1,1000)];
>> plot(t,f_impulso);
>> t=-10:0.01:10;
>> width=0.10;
>> f_sierra=sawtooth(2*pi*0.1*t,width);
>> plot(t,f_sierra);
>> t=-10:0.01:10;
>> f_triangular=sawtooth(2*pi*0.1*t,0.5);
>> plot(t,f_triangular);
>> tau=200e-2;
>> f_expon=exp(-t/tau);
>> plot(t,f_expon);
>> t=-10:0.01:10;
>> f_cuadrada=square(2*pi*0.5*t,duty);
>> plot(t,f_cuadrada);
UNIVERSIDAD DEL AZUAY ING. DIEGO CHACON MDHD
4 ANÁLISIS DE FOURIER
Las series de Fourier permiten describir señales periódicas como una combinación de
señales armónicas (sinusoides). Con esta herramienta, podemos analizar una señal
periódica en términos de su contenido frecuencial o espectro. Además, nos permite
establecer la dualidad entre tiempo y frecuencia, de forma que operaciones realizadas
en el dominio del tiempo tienen su dual en el dominio frecuencial. Utilizando
operaciones sobre vectores, se pueden calcular fácilmente los coeficientes de Fourier
correspondientes a una señal. En el ejercicio 2, se definen el vector n, que contiene los
índices de los coeficientes, y el vector cn, que contiene los coeficientes. Los coeficientes
cn, son los coeficientes espectrales de la señal. La gráfica de esos coeficientes en
función del índice armónico no de las frecuencias nωo se denomina espectro. Hay
dos tipos de gráficos, uno con la magnitud de los coeficientes y otro de la fase. Ambas
funciones son discretas en frecuencia.
5 EJERCICIO 2
Escriba un fichero MATLAB que proporcione los coeficientes de Fourier de una señal
cuadrada de periodo 0.2s (frecuencia 5Hz) y amplitud igual a 1 V.
% 0.2s y amplitud 1.
clear;
% frecuencia de la señal cuadrada (=1/T)
f=5;
T=1/f;
% Indice de los coeficientes
n=1:10;
% Coeficientes de Fourier
cn=2*(cos(n*pi)-1)./(-2*j*n*pi);
co=1;
subplot(2,1,1);
stem(n,abs(cn));
UNIVERSIDAD DEL AZUAY ING. DIEGO CHACON MDHD
ylabel('Magnitud de cn');
subplot(2,1,2);
stem(n,angle(cn));
ylabel('fase de cn');
xlabel('n');
A partir de la serie de Fourier, es posible reconstruir una señal periódica. Cuanto mayor
sea el número de armónicos utilizado en el desarrollo en serie, mejor será la
reconstrucción. Un parámetro importante en la reconstrucción de señales es la
velocidad de convergencia, o lo que es lo mismo, la velocidad con la que los
coeficientes de Fourier tienden a 0.
6 EJERCICIO 3
clear;
% frecuencia de la señal cuadrada
(=1/T) f=5; T=1/f;
% Indice de los coeficientes n=1:10;
% Generamos la serie de Fourier
t=-1:0.01:1; % vector de tiempos
for i=1:50
for k=1:size(t,2)
s(i,k)=(2*(1-cos(pi*i))/(pi*i))*sin(2*pi*i*f*t(k));
end
end
for k=1:size(t,2)
st(k)=sum(s(:,k));
end
st(1)=st(1)+1;
UNIVERSIDAD DEL AZUAY ING. DIEGO CHACON MDHD
plot(t,st,'r');
hold on;
% Señal cuadrada original
f_cuadrada=square(2*pi*f*t,50);
plot(t,f_cuadrada);
xlabel(‘tiempo’);
ylabel(‘Amplitud’);
MATLAB está equipado con funciones especiales que nos van a permitir realizar un
análisis de Fourier de funciones definidas por un conjunto de valores discretos. Por
ejemplo, el comando fft() nos permite obtener la transformada rápida de Fourier (fast
Fourier Transform) de una secuencia de números definida por el vector x. Por ejemplo:
>> X=fft(x); donde X es un vector de números complejos ordenados desde k=0...N-1. Si
queremos que sea más eficiente en el cálculo de la ffT, la longitud del vector x deberá
ser una potencia de 2. Podemos rellenar de ceros el vector x para que tenga la longitud
apropiada. Esto se consigue automáticamente haciendo: >> X=fft(x,N); donde N es
exponente de 2. Mientras más largo sea x, más fina será la escala para la ffT. Debido a
un fenómeno de plegamiento del espectro, sólo la primera mitad de los puntos
obtenidos son de utilidad. La función fftshift() reordena el vector X en orden creciente
de frecuencia. Si X es el vector resultante de hacer una ffT, utilizando esta función
reordenamos los puntos en función de la frecuencia. >> X=fftshift(X);
7 EJERCICIO 4
% Definicion de la señal
t=-0.25:0.001:0.25;
x=exp(-2*t).*sin(2*pi*200*t);
% Representacion en el tiempo
subplot(3,1,1);
plot(t,x);
title('x(t)=exp(-2t)·sin(2·pi·200·t)');
UNIVERSIDAD DEL AZUAY ING. DIEGO CHACON MDHD
xlabel('Tiempo (t)');ylabel('x(t)');
% Transformada de Fourier
X=fftshift(fft(x));
Xm=abs(X);
Xf=unwrap(angle(X))*180/pi;
% Base de frecuencias
delta_t = t(2)-t(1);
% Representacion en frecuencia
subplot(3,1,2);
plot(f,Xm,'r');
xlabel('frecuencia (Hz)');ylabel('|X(jw)|');
subplot(3,1,3);
plot(f,Xf,'r');zoom;
xlabel('frecuencia (Hz)');
ylabel('fase X(jw)');
8 EJERCICIO 5
% Definicion de la señal
t=-0.25:0.001:0.25;
x=exp(-2*t).*sin(2*pi*3*t);
plot(t,x);
title('x(t)=exp(-2t)·sin(2·pi·200·t)');
xlabel('Tiempo (t)');
ylabel('x(t)');
Xt=fft(x);
X=fftshift(Xt);
Xm=abs(X);
Xf=unwrap(angle(X))*180/pi;
% Base de frecuencias
delta_t = t(2)-t(1);
figure(2);
subplot(2,1,1);
plot(f,Xm,'r');zoom;
xlabel('frecuencia (Hz)');ylabel('|X(jw)|');
subplot(2,1,2);
plot(f,Xf,'r');zoom;
xrec=ifft(Xt);
UNIVERSIDAD DEL AZUAY ING. DIEGO CHACON MDHD
figure(3);
plot(t,xrec);
title('Transformada inversa')
xlabel('Tiempo (t)');
ylabel('xrec(t)');
9 PRODUCTO DE CONVOLUCIÓN
10 EJERCICIO 6
t = -pi:0.001:pi;
g_escalon=[zeros(1,1000*pi+1), ones(1,1000*pi+1)];
w = 2*pi; g = cos(w*100*t);
subplot(3,1,1); plot(t,g_escalon);
UNIVERSIDAD DEL AZUAY ING. DIEGO CHACON MDHD
title('SEÑAL ESCALON');
xlabel('Tiempo (t)');
ylabel('e(t)'); subplot(3,1,2);
plot(t,g); title('cos(2·pi·t)');
xlabel('Tiempo (t)');ylabel('cos(2*pi*100*t)');
subplot(3,1,3);
plot(t,g_conv(1:length(g)),'r') title('Convolucion');
xlabel('Tiempo (t)');