Contents

Ejemplo FDM con DFT - Tonos alejados

En este ejemplo vemos el espectro discreto (generado por una transformada discreta de Fourier o DFT) de dos tonos.

Si los tonos están alejados, las colas de su espectro no se afectan considerablemente

close all
Fs=32e3;    %Freq. muestreo
Nsamp=64;   %No puntos de DFT
t=0:1/Fs:(1/Fs)*(Nsamp-1);

fc1=2e3;    %Tono1
fc2=9.15e3; %Tono2

x=sin(2*pi*t*fc1)+sin(2*pi*t*fc2); % Genero la senyal en el tiempo
X=fft(x)/length(x); % La paso a frecuencia

f=(0:Nsamp/2-1)*Fs/Nsamp;         %Calculo frecuencas para la TF discreta
stem(f*1e-3,abs(X(1:Nsamp/2)))  % Muestro el espectro positivo.
title('DFT')
xlabel('Freq. [kHz]')

Ejemplo FDM con DFT - Tonos cercanos

Si los tonos están muy cerca, se puede apreciar el efecto de su influencia en la amplitud del tono de 2kHz

close all
Fs=32e3;    %Freq. muestreo
Nsamp=64;   %No puntos de DFT
t=0:1/Fs:(1/Fs)*(Nsamp-1);

fc1=2e3;    %Tono1
fc2=3.15e3; %Tono2

x=sin(2*pi*t*fc1)+sin(2*pi*t*fc2); % Genero la senyal en el tiempo
X=fft(x)/length(x); % La paso a frecuencia

stem(f*1e-3,abs(X(1:Nsamp/2)))  % Muestro el espectro positivo.
title('DFT')
xlabel('Freq. [kHz]')

Ejemplo FDM con Transformada de Fourier Continua - Tonos alejados

Si representamos la transformada de Fourier continua podemos ver el efecto que esta provocando su discretizacion.

Hay que recordar que la DFT es un muestreo discreto sobre la transformada de Fourier Continua

clear
Fs=32e3;    %Freq. muestreo
Nsamp=64;   %No puntos de DFT
Nsampcont=2^20;         %numero de muestras alto para simular una TF continua
t=0:1/Fs:(1/Fs)*(Nsamp-1);

fc1=2e3;    %Tono1
fc2=9.15e3; %Tono2

x=sin(2*pi*t*fc1)+sin(2*pi*t*fc2); % Genero la senyal en el tiempo


Xcont=fft(x,Nsampcont)/length(x); %Genero la TF continua
X=fft(x)/length(x);               %Genero la TF discreta

fcont=(0:Nsampcont-1)*Fs/Nsampcont; %Frecuencias para represetar la TF continua
figure,
plot(1e-3*fcont(1:length(fcont)/2),abs(Xcont(1:Nsampcont/2)),'r') %Dibujo espectro positivo de TF continua
f=(0:Nsamp-1)*Fs/Nsamp;         %Calculo frecuencas para la TF discreta
hold on
stem(1e-3*f(1:Nsamp/2),abs(X(1:Nsamp/2)))    %Dibujo espectro positivo de TF discreta

title('Transformada Fourier Continua Vs Discreta')
legend('Espectro continuo','Espectro muestreado')
xlabel('Freq. [kHz]')
grid on

Ejemplo FDM con Transformada de Fourier Continua - Tonos cercanos

Al acercarse los tonos se puede ver la influencia de las colas

clear
Fs=32e3;    %Freq. muestreo
Nsamp=64;   %No puntos de DFT
Nsampcont=2^20;         %numero de muestras alto para simular una TF continua
t=0:1/Fs:(1/Fs)*(Nsamp-1);

fc1=2e3;    %Tono1
fc2=3.15e3; %Tono2

x=sin(2*pi*t*fc1)+sin(2*pi*t*fc2); % Genero la senyal en el tiempo


Xcont=fft(x,Nsampcont)/length(x); %Genero la TF continua
X=fft(x)/length(x);               %Genero la TF discreta

fcont=(0:Nsampcont-1)*Fs/Nsampcont; %Frecuencias para represetar la TF continua
figure,
plot(1e-3*fcont(1:length(fcont)/2),abs(Xcont(1:Nsampcont/2)),'r') %Dibujo espectro positivo de TF continua
f=(0:Nsamp-1)*Fs/Nsamp;         %Calculo frecuencas para la TF discreta
hold on
stem(1e-3*f(1:Nsamp/2),abs(X(1:Nsamp/2)))    %Dibujo espectro positivo de TF discreta

title('Transformada Fourier Continua Vs Discreta')
legend('Espectro continuo','Espectro muestreado')
xlabel('Freq. [kHz]')
grid on

Ejemplo OFDM

La ortogonalidad se consiegue utilizando tonos cuyos ceros del espectro se solapen en frecuencia. Esto provocara nula interferencia entre ellos.

En este ejemplo vemos dos tonos independientes. Observe como, si las frecuencias de los mismos se eligen con cuidado, no hay interferencias entre ellos (la posicion de cada tono coincide con un nulo del otro tono)

clear
Fs=32e3;    %Freq. muestreo
Nsamp=64;   %No puntos de DFT
Nsampcont=2^20;         %numero de muestras alto para simular una TF continua
t=0:1/Fs:(1/Fs)*(Nsamp-1);

fc1=2e3;    %Tono1
fc2=9e3; %Tono2

x1 = sin(2*pi*t*fc1);
x2 = sin(2*pi*t*fc2); %


X1cont=fft(x1,Nsampcont)/length(x1); %Genero la TF continua
X1=fft(x1)/length(x1);               %Genero la TF discreta

X2cont=fft(x2,Nsampcont)/length(x2); %Genero la TF continua
X2=fft(x2)/length(x2);               %Genero la TF discreta

fcont=(0:Nsampcont-1)*Fs/Nsampcont; %Frecuencias para represetar la TF continua
figure,
plot(1e-3*fcont(1:length(fcont)/2),abs(X1cont(1:Nsampcont/2))) %Dibujo espectro positivo de TF continua
f=(0:Nsamp-1)*Fs/Nsamp;         %Calculo frecuencas para la TF discreta
hold on
stem(1e-3*f(1:Nsamp/2),abs(X1(1:Nsamp/2)),'LineWidth',2)    %Dibujo espectro positivo de TF discreta

plot(1e-3*fcont(1:length(fcont)/2),abs(X2cont(1:Nsampcont/2)),'r') %Dibujo espectro positivo de TF continua
f=(0:Nsamp-1)*Fs/Nsamp;         %Calculo frecuencas para la TF discreta
hold on
stem(1e-3*f(1:Nsamp/2),abs(X2(1:Nsamp/2)),'r','LineWidth',2)    %Dibujo espectro positivo de TF discreta


title('Transformada Fourier Continua Vs Discreta - 2 Tonos Ortogonales')
legend('Espectro1 continuo','Espectro1 muestreado','Espectro2 continuo','Espectro2 muestreado')
xlabel('Freq. [kHz]')
grid on

Ejemplo OFDM para todos los tonos posibles

%Todos los tonos cuya frecuencia sea m*Fs/Nsamp con m=0,1,...Nsamp-1
%tendrán un número de periodos entero y por lo tanto no se interferirán entre ellos.
%
% Se puede, por tanto, utilizar Nsamp tonos diferentes de manera que no
% haya interferencias
%
%Esos tonos son:

tonos=(0:Nsamp-1)*Fs/Nsamp

% Representando la señal temporal se puede ver cómo efectivamente
% entran un número de ciclos entero:

Fcont=1e6;  %Frecuencia muy alta para simular las señales contínuas
tcont=0:1/Fcont:(1/Fs)*(Nsamp-1);
t=0:1/Fs:(1/Fs)*(Nsamp-1);
tonos = (0:Nsamp-1)*Fs/Nsamp;


x=sin(2*pi*t'*tonos);
X = fft(x)/length(x);

xcont=sin(2*pi*tcont'*tonos);
Xcont = fft(x,Nsampcont)/length(x);


fcont=(0:Nsampcont-1)*Fs/Nsampcont; %Frecuencias para represetar la TF continua
figure,
plot(1e-3*fcont(1:length(fcont)/2),abs(Xcont(1:Nsampcont/2,:))) %Dibujo espectro positivo de TF continua
f=(0:Nsamp-1)*Fs/Nsamp;         %Calculo frecuencas para la TF discreta
hold on
stem(1e-3*f(1:Nsamp/2),abs(X(1:Nsamp/2,:)),'LineWidth',2)    %Dibujo espectro positivo de TF discreta

title('Transformada Fourier Continua y Discreta en tonos ortogonales')
xlabel('Freq. [kHz]')
grid on
tonos =

  Columns 1 through 6

           0         500        1000        1500        2000        2500

  Columns 7 through 12

        3000        3500        4000        4500        5000        5500

  Columns 13 through 18

        6000        6500        7000        7500        8000        8500

  Columns 19 through 24

        9000        9500       10000       10500       11000       11500

  Columns 25 through 30

       12000       12500       13000       13500       14000       14500

  Columns 31 through 36

       15000       15500       16000       16500       17000       17500

  Columns 37 through 42

       18000       18500       19000       19500       20000       20500

  Columns 43 through 48

       21000       21500       22000       22500       23000       23500

  Columns 49 through 54

       24000       24500       25000       25500       26000       26500

  Columns 55 through 60

       27000       27500       28000       28500       29000       29500

  Columns 61 through 64

       30000       30500       31000       31500