| 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);
|
|