No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail
from BPSK Simulator for Low Rate Transmisions by César Delgado González
BPSK Simulator for didactical purposes. Systemic coding style.

bpsk_mod(x,L,SNR, pulso, theta, phi)
function [I,Q] = bpsk_mod(x,L,SNR, pulso, theta, phi)
%------------------------------------------------------------------------
%|  function bpsk_mod(x, L, SNR, pulso, theta, phi)
%------------------------------------------------------------------------
%|
%|    Funcion que implementa un generador de seales paso banda en
%|  fase y cuadratura. 
%| 
%|    Parametros de Entrada:
%|       1.- X = secuencia de bits
%|       2.- L = factor de sobremuestreo
%|       3.- SNR = relacion seal a ruido a la salida
%|       4.- PULSO = bandera, 0= pulso rectangular, 
%|                            1= filtro coseno alzado 
%|       5.- THETA = error de fase
%|       6.- PHI   = error de frecuencia
%|
%|   Salidas:
%|       1.- I = seal en fase (imaginaria compleja)
%|       2.- Q = seal en cuadratura (imaginaria pura)
%|
%|     NOTA: requiere Toolbox de Comunicaciones
%|
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

% 1.- Secuencia de "1", "-1"
%----------------------------
x = 2*x-ones(1,length(x));

% 2.- Generador PAM
%-------------------
PAM = generaPAM(x,L);

% 2.- Filtrado Coseno Alzado
%---------------------------
if pulso,
    Linea = PAM; 
else
    h = rcosfir(0.6,[-3 3],L,1); 
    Linea  = filter (h,1,PAM);         
end;

Linea    = Linea ./ max(Linea);

% 3.- Agregamos ruido
%---------------------
Ptx       = std(Linea)^2;  % Varianza de la seal
sigma     = sqrt(Ptx/2)*10^(-SNR/20);
n_real    = sigma*(randn(1,length(Linea)));
n_imag    = sigma*(randn(1,length(Linea)));
Linea     = Linea + (n_real + j.*n_imag);

% 4.  Creamos I/Q agregando fase
%-------------------------------
IQ = Linea*exp(j*(theta+phi));
I = real(IQ);
Q = imag(IQ);





Contact us at files@mathworks.com