Desempeño de OFDM en un Canal PLC (power line comunication)

gonzamaster

New member
Hola amigos necesito su opinion, ya que tengo implementado un codigo en Matlab para ver el desempeño de la modulacion OFDM basica en el canal PLC, segun el moldeo matematico de Middleton el ruido de la linea electrica es de clase A y esta formado por ruido impulsivo y ruido gaussiano. para analiza el desempeño tengo el siguiente codigo OFDM que solo consta de serie-paralelo, IFFT, FFT y paralelo serial. A este modelo OFDM basico le agrego el ruido de la linea electrica (PLC) y tambien lo tengo con ruido gaussiano blanco (AWGN). Escucho sugerencias y posibles mejoras para mejorar su desempeño en el canal PLC gracias!!

%%OFDM
%% Inicializacion
clear all; %close all;% clc
%% Parametros de simulacion
nbitpersym =1280;  %  numero de subportadoras
nsym =20; % numero de simbolos para cada subportadora
% simbolos totales transmitidos = nbitpersym*nsym
%%Generacion de Datos Binarios aleatorios
t_data=randi(0:1,1,nbitpersym*nsym);

%%Conversion Serie a Paralelo
par_data = reshape(t_data,nsym,nbitpersym);

%% Transformada inversa de fourier
IFFT_data =ifft(par_data); %Calcula la transformada inversa de fourier

%% Conversion paralelo a serial
ser_data2 = reshape(IFFT_data,1,nbitpersym*nsym);

%% Desde aca en adelante será iterativo para realizar estimaciones de BER a
%distintos SNR
SNRdb=0:1:30;
% SNRdb=22;
Iterations=30; %Se calcula el promedio para "Iterations" simulaciones
BER=zeros(Iterations,length(SNRdb));
for j=1:Iterations
    for i=1:length(SNRdb)
        %% Generacion de ruido en canal PLC
        base=10;
        exponente=-0.1*SNRdb(i);
        double_var=0;
        var=0.5*(realpow(base,exponente));
        sigma=sqrt(var);
        varg=var/101;%var gaussiana
        sigmag=sqrt(varg);%ruido de fondo
        vari=100*varg;%var impulsiva
        sigmai=sqrt(vari);%ruido impulsivo
        %condiciones iniciales
        %Vector a tx
        xn=rand(nsym*nbitpersym,1);
        yn=rand(nsym*nbitpersym,1);
        ng=sigmag*sqrt(-2*log(xn)).*cos(2*pi*(yn));
        ni=sigmai*sqrt(-2*log(xn)).*sin(2*pi*(yn));
        Total_mues=ng'+ni';
       
        %% Pasa a traves del canal
    Tx_data =  ser_data2+Total_mues;%Ruido impulsivo y gaussiano CANAL PLC
%    Tx_data=ser_data2;%Sin ruido, para efectos de corroborar la implementacion del sist. de comunicaciones
%    Tx_data=awgn(ser_data2,SNRdb(i),'measured');%Solo ruido aditivo GAUSSIANO BLANCO

       
        %%Serie a Paralelo
        par_data2 = reshape(Tx_data,nsym,nbitpersym);
       
        %% Transformada de Fourier
        FFT_recdata=fft(par_data2);
        r_data = round(FFT_recdata); %se redondea al entero mas cercano
       
        %% Conversion paralelo a serial
        ser_data3 = reshape(r_data,1,nbitpersym*nsym);         

       
        ber(i)=(sum(abs(t_data-ser_data3)))/length(t_data);% CALCULO DEL BER

    end
    BER(j,:)=ber;
end

MeanBER = mean(BER,1);
semilogy(SNRdb,MeanBER,'b'); %hold on; %hold on es para que no se borre el grafico
xlabel('SNR db')
ylabel('Razon de Bits Erroneos')
%plot(SNRdb,MeanBER,'b')
 

Welcome to EDABoard.com

Sponsor

Back
Top