sábado, 28 de abril de 2012

Señales discretas vs Señales continuas???

Aunque se definen como dos tipos diferentes de señales (y teóricamente lo son), se manejan de forma similar y en mi opinión están muy entrelazadas.

Ver una señal discreta es como ver el muestreo de lo que sería una continua pero por pedacitos, es como si en vez de evaluar la función en todos los puntos, lo hicieras sólo en algunos y eso te permite tener una figura cercana de como sería si evaluara todos los puntos.

Podría tener la misma función como discreta que como continua, y la continua sería como si tuviera esa en discreta pero evaluada en TODOS los puntos, y cuando digo TODOS me refiero a que por más pequeño que redujese el intervalo en donde quiero obtener información la tendría porque para cualquier valor existe una función conocida... Lo cual no se tiene en las señales discretas pues la información sólo esta en esos puntos dados, el resto...mmm Imaginarlo? Suponerlo? Aproximarlo?.... Nada exacto.

Esta diferencia entre la una y la otra (que a su vez es su relación) es la debilidad y la fortaleza de la una y de la otra. Es decir, el hecho de que las señales discretas estén definidas sólo en puntos específicos hace que las operaciones con ellas (como convolución, por ejemplo) sea mucho más simple que para las señales continuas. Sin embargo, también es su debilidad porque hace que carezca de información que la continua siempre tendrá.

En mi opinión, estos dos tipos de señales no son en sí diferentes sino dos modos de presentar una información: uno más completo que el otro, uno más simple que el otro... De una de ellas podría obtenerse la otra, aunque lógicamente es  más confiable que de una continua obtenga una discreta (lo cual es el fundamento básico del "Muestreo de Señales") a que de una discreta obtenga una continua puesto que esto último requeriría de completar los espacios vacíos sin saber lo que en realidad debería estar en ellos.

No es una contra la otra, es una de la otra...

sábado, 7 de abril de 2012

Analizando una transformada típica...

Cuando se estudian las transformadas de Fourier de las señales, puede hallarse la transformada de cada función en particular de acuerdo a la fórmula, sin embargo para algunas funciones típicas ya están establecidas sus transformadas de forma general y sólo es necesario cambiar parámetros específicos.

Algunas de ellas son:



Para entender como varía una de ellas, graficaremos una muy común, la número 12 en la tabla que corresponde a la transformada de un pulso que corresponde a una señal senosoidal modificada.

Para facilitar su gráfica, se usará el comando "sinc" de matlab que se define como:


Y se usa como la transformada de Fourier para las funciones de ese tipo.


Para esto, se usa la función básica:

FUNCIÓN: x(w) =A*T*sinc((w*T)/2)
dándole valores específicos a los parámetros A y T... Veremos como cambia.
Con el siguiente script de Matlab podemos obtener una comparación para 4 situaciones diferentes:
  • A=1 y T=1
  • A=1 y T=5
  • A=1 y T=10
  • A=1 y T=50
Así:

clear all
clc
format long
close all

%FUNCIÓN: x(w) =A*T*sinc((w*T)/2);
A=1;
w=-10:0.005:10;

T=1;
xw=A*T*sinc((w*T)/2);
subplot(2,2,1);
plot(w,xw)
axis([-10 10 -0.4 1.2]);
grid on
title('Trans. de Fourier de [u(t+1)-u(t-1)]  // A=1, T=1')
xlabel('w')
ylabel('x(w)')
hold on

T=5;
xw=A*T*sinc((w*T)/2);
subplot(2,2,2);
plot(w,xw,'-r')
axis([-6 6 -2 6]);
grid on
title('Trans. de Fourier de [u(t+5)-u(t-5)]  // A=1, T=5')
xlabel('w')
ylabel('x(w)')
hold on

T=10;
xw=A*T*sinc((w*T)/2);
subplot(2,2,3);
plot(w,xw,'-m')
axis([-4 4 -4 10.5]);
grid on
title('Trans. de Fourier de [u(t+10)-u(t-10)]  // A=1, T=10')
xlabel('w')
ylabel('x(w)')
hold on

T=50;
xw=A*T*sinc((w*T)/2);
subplot(2,2,4);
plot(w,xw,'-k')
axis([-1.5 1.5 -12 40]);
grid on
title('Trans. de Fourier de [u(t+50)-u(t-50)]  // A=1, T=50')
xlabel('w')
ylabel('x(w)')
hold on

Obteniendo las siguientes transformadas:

  

Variar en otros parámetros seguirá obteniendo diversos cambios... Quien se anima?

Ahora si.. Una verdadera SUMATORIA DE FOURIER

Ya es hora de aplicar los conceptos aprendidos acerca de Fourier para aproximar una función a través de una sumatoria de Fourier.

En este caso, expresaré la siguiente función x(t) como una sumatoria de Fourier de manera que crearé un programa en Matlab que grafique la aproximación de esta función, dependiendo del número N que se desee para limitar la sumatoria:

 

Esta función se puede definir como x(t) = t , desde -1 a 1, con un periodo To=2.

El siguiente script calcula primero la integral que define la función X(k) para los coeficientes y luego la evalúa en el intervalo deseado de k, las suma y la grafica:

OBSERVACIÓN:
  • Los comentarios en AZUL = Valores que pueden modificarse a petición del usuario
  • Los comentarios en VERDE = Aclaraciones de lo que  produce el programa
  • Los comentarios en ROJO = Notas importantes en el proceso de cálculo
      

clc
clear all
syms t
syms k
funx=t; %funx=Funcion armónica a analizar
To=2; %To=Periodo de la función armónica
w=(2*pi)/To;
xki=funx*exp(-j*w*k*t);
xk=(1/To)*int(xki,-1,1); %-1 a 1 es el intervalo a analizar (Un Periodo)
disp(xk); %xk muestra la función X(k) de los coeficientes de Fourier

N=25; %N= Numero de sumatorias para la serie de Fourier
      %N PUEDE VARIARSE PARA CAMBIAR LA EXACTITUD DE LA SUMATORIA

xt=0;
for kn=-N:1:N
  
    if kn==0
        xik=0 %No puede evaluarse en k=0 porque se obtiene una INDETERMINADA
              %El valor de X(k) = 0 cuando k=0 se obtuvo por L'Hopital

    else
      xi=xk*exp(j*w*k*t);
      xik=subs(xi,k,kn);
    end
   
   disp(kn) %kn muestra en que numero de evaluacion de k va el proceso
   disp(xik) %xik muestra cual es la funcion x(k) para ese valor de k
   xt=xt+xik; %Sumatoria de Fourier (aproximacion de x(t))
   end

disp(xt)

for ti=-1.5:0.01:1.5 %Intervalo de tiempo en que sera graficada la función
                     %Mientras mas pequeño sea el paso, mejor nitidez
                     %tendra la gráfica pero más lento será el proceso.

      xti=subs(xt,t,ti);
      plot(ti,xti,'--b.')
      grid on
      title('Representación de Función x(t) como Sumatoria de Fourier')
      xlabel('Tiempo t')
      ylabel('Aproximación de x(t)')
      hold on
end
 

Como se aclaró en el proceso, la evaluación de la función X(k) cuando k=0 no puede realizarse de manera directa pues se obtiene una indeterminada. Esta evaluación debe hacerse a través de L'Hopital con dos derivadas para obtener un valor igual a X(0) = 0. 


Así:






Pueden variarse por tanto los parámetros de N y de t para obtener, en el primer caso, una mejor aproximación de la sumatoria y en el segundo variar los parámetros de la gráfica, teniendo en cuenta que mientras más grandes sean estos números MAS TIEMPO DEMORARÁ EL COMPUTADOR PROCESANDO.... Paciencia...!!!

Con los parámetros establecidos en este script, se obtiene la siguiente gráfica:


Finalmente, la aproximación... Toma forma!