1. TC.Práctica 1
Código Práctica 1
fs = 1024; % frec. de muestreo (Hz)
A = 0.1; % valor de pico de la sinusoide (V)
Z = 50; % impedancia (Ohmios)
N = 1024; % número de muestras
f0 = 50; % frecuencia de la sinusoide (Hz)
nef = 0.001; % valor eficaz del ruido blanco (V)
B = 50; % B en el que mediremos el ruido
fn = 300; % frec. central de la banda de ruido
>> % (3) Vector con los instantes de muestreo:
T = 1/fs; % tiempo de muestreo: inversa de fs
t = 0:T:(N-1)*T; % N elementos, desde 0 en saltos de T
>> % (4) Sinusoide: creación
x = A*sin(2*pi*f0*t); % muestras de la sinusoide
>> help powmeter
function P=powmeter(x,fs,f0,B,Z)
Función que calcula la potencia (W) que hay dentro de una banda
espectral de la señal x.
Datos de entrada:
x = Señal de entrada
fs = Frecuencia de muestreo
f0 = Frecuencia central de la banda
B = Ancho de banda de la medida
Z = Impedancia de trabajo (parte real)
2. >> % (5) Sinusoide: potencia
px_W = powmeter(x,fs,f0,1,Z) % sin ";" al final, muestra el valor (W)
Px_dBm = 10*log10(px_W*1e3) % en dBm
helptime_dep
functiontime_dep(x,T,Z,s,lin_log)
Esta función representa en la parte superior la señal en el dominio
del tiempo, y en la parte inferior la d.e.p.
Parametros de entrada:
......................
x: señal a analizar (real)
T: periodo de muestreo
Z: impedancia (ohmios)
s: título que se quiere aparezca
lin_log: representación lineal ('lin') o logaritmica ('log')
>> % (6) Sinusoide: visualización en osciloscopio y analizador
figure(1)
time_dep(x,T,Z,'SINUSOIDE','log'); % el espectro siempre con eje log.
3. SINUSOIDE
V (voltios)
0.1
0.05
0
-0.05
-0.1
0
0.1
0.2
0.3
0.4
0.5
t (sg)
0.6
0.7
0.8
0.9
1
0
dBm
-50
-100
-150
-200
0
100
200
300
Hz
400
500
>> % (7) Ruido blanco (gaussiano en tensión): creación
n = nef*randn(size(t)); % vector gaussiano, valor eficaz nef
>> % (8) Ruido blanco: valores teóricos
disp('Valores teóricos:')
pn_W = nef^2/Z % potencia (W)
Pn_dBm = 10*log10(pn_W*1e3) % potencia (dBm)
No_W_Hz = pn_W/(fs/2) % densidad espectral (W/Hz)
No_dBm_Hz = 10*log10(No_W_Hz*1e3) % densidad espectral (dBm/Hz)
Pn_dBm_B = 10*log10(No_W_Hz*B*1e3) % potencia (dBm) en B = 50 Hz
>> % (9) Ruido blanco: valores simulados
disp('Valores simulados:')
pn_W = powmeter(n,fs,fn,B,Z) % potencia de ruido (W) en B
Pn_dBm = 10*log10(pn_W*1000) % potencia de ruido (dBm) en B
>> % (10) Ruido blanco: visualización
figure(2), time_dep(n,T,Z,'RUIDO','log');
600
4. -3
V (voltios)
4
RUIDO
x 10
2
0
-2
-4
0
0.1
0.2
0.3
0.4
0.5
t (sg)
0.6
0.7
0.8
0.9
1
-60
dBm
-70
-80
-90
-100
0
100
200
300
Hz
400
500
>> % (11) Señal con ruido: creación
xn = x + n; % AWGN es aditivo, se suma al tono
% (12) Señal con ruido: visualización
figure(3), time_dep(xn,T,Z,'SINUSOIDE CON RUIDO','log');
600
5. SINUSOIDE CON RUIDO
V (voltios)
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
t (sg)
0.6
0.7
0.8
0.9
1
dBm
0
-50
-100
0
100
200
300
Hz
400
500
600
% (13) Señal con ruido: promediado (para ver el nivel de ruido mejor)
NP = input('Número de espectros promediados?: ');
tic% comienza a medir el tiempo de la operación
unos = ones(NP,1); % una fila por cada espectro (NP filas)
matx = unos*x; % matriz con NP filas, cada fila es el tono x
matn = nef*randn(NP,N); % cada fila es un ruido diferente
matxn = matx+matn; % en cada fila: suma de x con un ruido distinto
matXN = fft(matxn.')/N; % espectro (de señal)
Smatxn = (matXN.*conj(matXN)).'/Z; % densidad espectral de potencia
(DEP)
DEPprom = mean(Smatxn); % DEP promedio de cada columna (afecta al
ruido)
DEPpromuni = [DEPprom(1) 2*DEPprom(2:N/2)]; % se pasa DEP a unilateral
ejefrec = (0:fs/2-1); % eje de frec. de la DEP unilateral
toc% se termina de medir el tiempo de la operación
DEPpromuni_dBm = 10*log10(DEPpromuni*1e3); % DEP en dBm/Hz
figure(4), plot(ejefrec,DEPpromuni_dBm), grid% se dibuja
title('SINUSOIDE CON RUIDO. PROMEDIO DE ESPECTROS')
xlabel('Hz'), ylabel('dBm')
% Fin
6. 1-Compruebe que la potencia, mostrada por pantalla, de la sinusoide es la
correcta (total,unilateral). Como su valor de pico es 0,1 V y la impedancia
vale 50 Z, debe aparecer:
1-Px_dBm = 10*log10(px_W*1e3) % en dBm
Px_dBm = -10
2. Compruebe que la sinusoide aparece en el osciloscopio y el analizador de
time_depcon los valores adecuados (amplitud, frecuencia, potencia). En el
analizador, realice un zoom para
apreciar con detalle los −10 dBm.
% (6) Sinusoide: visualización en osciloscopio y analizador
figure(1)
time_dep(x,T,Z,'SINUSOIDE','log'); % el espectro siempre con eje log.
SINUSOIDE
0.1
0.08
0.06
V (voltios)
0.04
0.02
0
-0.02
-0.04
-0.06
-0.08
-0.1
0
0.1
0.2
0.3
0.4
0.5
t (sg)
0.6
0.7
0.8
0.9
1
0
-5
-10
dBm
-15
-20
-25
-30
-35
-40
0
50
100
Hz
150
7. 3. Compruebe el valor de la potencia de ruido en el ancho de banda B = 50
Hz. Siga los siguientes pasos:
a) Calcule la potencia de n (en W y dBm).
b) Calcule la densidad espectral del ruido. Tenga en cuenta que el ancho de
banda equivalente del vector de ruido es B’ = fs/2 (la frecuencia de
muestreo dividida entre 2 para que salga unilateral).
c) Calcule la potencia deruido en B = 50 Hz.
3-a)
% (7) Ruido blanco (gaussiano en tensión): creación
n = nef*randn(size(t)); % vector gaussiano, valor eficaz nef
>> % (8) Ruido blanco: valores teóricos
disp('Valores teóricos:')
pn_W = nef^2/Z % potencia (W)
Pn_dBm = 10*log10(pn_W*1e3) % potencia (dBm)
pn_W =2.0000e-008
Pn_dBm =-46.9897
3-b)
No_W_Hz = pn_W/(fs/2) % densidad espectral (W/Hz)
No_dBm_Hz = 10*log10(No_W_Hz*1e3) % densidad espectral (dBm/Hz)
No_W_Hz = 3.9063e-011
No_dBm_Hz = -74.0824
3-c)
Pn_dBm_B = 10*log10(No_W_Hz*B*1e3) % potencia (dBm) en B = 50 Hz
Pn_dBm_B = -57.0927
8. 4. Compruebe que el nivel de la densidad espectral de ruido (unilateral) en
el analizador de time_depcoincide (aproximadamente) con el valor calculado
(−74,1 dBm/Hz).
T1=(2/fs)
figure(2), time_dep(n,T1,Z,'RUIDO','log');
-3
V (voltios)
4
RUIDO
x 10
2
0
-2
-4
0
0.2
0.4
0.6
0.8
1
t (sg)
1.2
1.4
1.6
1.8
2
-60
dBm
-70
-80
-90
-100
0
50
100
150
Hz
200
250
300
9. 5. Observe la sinusoide con AWGN: En el osciloscopio apenas notara el ruido
porque es pequeño comparado con la señal. En el espectro vera claramente la
delta del tono y el nivel del
AWGN.
% (11) Señal con ruido: creación
xn = x + n; % AWGN es aditivo, se suma al tono
% (12) Señal con ruido: visualización
figure(3), time_dep(xn,T,Z,'SINUSOIDE CON RUIDO','log');
SINUSOIDE CON RUIDO
V (voltios)
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
t (sg)
0.6
0.7
0.8
0.9
1
0
dBm
-50
-100
-150
0
100
200
300
Hz
400
500
600
10. 6. Promedie bastantes espectros para conseguir que el AWGN presente una
densidad espectral de potencia razonablemente plana. (Como es logico, el
tono no se ve afectado por el promediado.) Por ejemplo, pruebe con NP = 100,
1000, 10000 y 100000. Usando el valor Más alto que no cree problemas de
memoria, compruebe ahora con el zoom que el ruido tiene −74,1 dBm/Hz.
% (10) Ruido blanco: visualización
figure(2), time_dep(n,T,Z,'RUIDO','log');
>> % (11) Señal con ruido: creación
xn = x + n; % AWGN es aditivo, se suma al tono
% (12) Señal con ruido: visualización
figure(3), time_dep(xn,T,Z,'SINUSOIDE CON RUIDO','log');
>> % (13) Señal con ruido: promediado (para ver el nivel de ruido mejor)
NP = input('Número de espectros promediados?: ');
tic % comienza a medir el tiempo de la operación
unos = ones(NP,1); % una fila por cada espectro (NP filas)
matx = unos*x; % matriz con NP filas, cada fila es el tono x
matn = nef*randn(NP,N); % cada fila es un ruido diferente
matxn = matx+matn; % en cada fila: suma de x con un ruido distinto
matXN = fft(matxn.')/N; % espectro (de señal)
Smatxn = (matXN.*conj(matXN)).'/Z; % densidad espectral de potencia (DEP)
DEPprom = mean(Smatxn); % DEP promedio de cada columna (afecta al ruido)
DEPpromuni = [DEPprom(1) 2*DEPprom(2:N/2)]; % se pasa DEP a unilateral
ejefrec = (0:fs/2-1); % eje de frec. de la DEP unilateral
toc % se termina de medir el tiempo de la operación
DEPpromuni_dBm = 10*log10(DEPpromuni*1e3); % DEP en dBm/Hz
figure(4), plot(ejefrec,DEPpromuni_dBm), grid % se dibuja
title('SINUSOIDE CON RUIDO. PROMEDIO DE ESPECTROS')
xlabel('Hz'), ylabel('dBm')
% Fin
Número de espectros promediados?:
11. Para NP=100
SINUSOIDE CON RUIDO. PROMEDIO DE ESPECTROS
0
-10
-20
dBm
-30
-40
-50
-60
-70
-80
0
100
200
300
Hz
400
500
600
Para NP=1000
SINUSOIDE CON RUIDO. PROMEDIO DE ESPECTROS
0
-10
-20
dBm
-30
-40
-50
-60
-70
-80
0
100
200
300
Hz
400
500
600
12. Para NP=10000
SINUSOIDE CON RUIDO. PROMEDIO DE ESPECTROS
0
-10
-20
dBm
-30
-40
-50
-60
-70
-80
0
100
200
Para NP=100000No deja representarlo
300
Hz
400
500
600
13. Ejercicios
Calcule el valor de pico de la sinusoide (cuyas muestras estan en el vector
x). Para ello basta con traducir la definicion de valor de pico a MATLAB:
v_p = max(abs(x))
Si tiene dudas sobre el funcionamiento de alguna de las funciones que
aparecen en el codigo,tecleehelpnombre_funcion, y estudie la informacion
que se presenta por pantalla.
v_p = max(abs(x))
v_p =
0.1000
Calcule el valor medio de la sinusoide. En cada una de las siguientes lineas
de codigo se ofrece una forma diferente de conseguirlo. Piense que ventajas
e inconvenientes presenta cada
una:
a)
suma=0; for i=1:N, suma=suma+x(i); end, media_x=suma/N
b)
media_x = sum(x)/length(x)
c)
media_x = mean(x)
Observara que no sale exactamente 0 (si bien se obtiene un numero muy
pequeno). .Por que?
Calcule el valor eficaz de la sinusoide. Es suficiente con:
x_ef = std(x)
Calcule el valor cuadratico medio de la sinusoide. Segun la definicion:
media_x2 = mean(x.^2)
Por otro lado, teniendo en cuenta que el valor cuadratico medio es la
potencia de alterna sobre1 Z, queda claro que tambien se puede obtener con:
media_x2 = std(x)^2
Es mas, como un valor cuadratico medio es una varianza desde el punto de
vista estadistico,
podemos incluso usar:
media_x2 = var(x)
14. Ejercicio1
Calcule el valor medio del ruido (cuyas muestras estan en el vector n).
Compruebe que sale un valor similar (pero no igual) a 0. (Ya no se da un
codigo. Escribalo por su cuenta.)
media_ruido=mean(n)
media_ruido =
-3.3132e-005
Calcule el valor eficaz del ruido. Compruebe que sale un valor similar (pero
no igual) a nef.
n_ef=std(n)
n_ef =
9.9579e-004
Calcule el valor cuadratico medio del ruido. Si divide el resultado por 50,
.que parametroseobtiene?
media_n2=var(n)
media_n2 = 9.9160e-007
Sale la potencia del ruido
15. PRACTICA 2
Distorsión Lineal
retardo=6e-6
atenuacion=6
fc=2,5e6%frecuencia corte
n=6%orden filtrado
distorsionfase=3%orden
Genere un pulso de 4 μs de duración y 1 V de amplitud, dentro de una ventana de
observación de 42,66 μs. Debe trabajar con una frecuencia de muestreo de 6 MHz en su
simulación. Así:
a) A partir de la frecuencia de muestreo calcule el tiempo de muestreo, T.
fm=6e6;%freq muestreo 6MHz
Tm=1/fm;%periodo de muesteo
b) Calcule cuántas muestras hay en 4 μs (N1) y en 42,66 μs (NV). Para facilitar el
procesado, redondee NV a una potencia de 2.
fm=6e6%frecuencia muestro
Tm=1/fm%Periodo muestreo
Z=1
%usx6Mhz=24...Representa el número de muestras que van a ser 1...es
%decir...24 muestras van a estar a 1 y el resto a 0
N1=4*6
%42,66usx6Mhz=....-->230=256(redondeado)-(24+2)....numero total de
muestras
NV=42,66*6
%Como te piden redondear el número de muestras....la potencia de 2 mas
%cercana es 256
NV=256
c) El pulso en cuestión será un vector de NV elementos, de los que N1 valdrán 1 (en voltios)
y el resto 0. Por ejemplo: una forma elegante de crear el vector es:
x=[zeros(1,2) ones(1,24) zeros(1,230)];
s='pulso';
time_dep(x,Tm,1,s,'log');
pulso
V (voltios)
1
0.5
0
0
0.5
1
1.5
2
2.5
3
3.5
4
t (sg)
4.5
-5
x 10
100
dBm
0
-100
-200
0
0.5
1
1.5
Hz
2
2.5
3
6
x 10
16. 4- Para simular el retardo y la atenuación use la función del apéndice atade.
Observaciones:
a) Realice el retardo y la atenuación en pasos separado. (Primero retarde 6 μs y atenúe 0
dB. Después retarde 0 μs y atenúe 6 dB.) De esta forma podrá apreciar mejor el efecto
de cada transformación.
b) El retardo se pasa a la función atadecomo un número de muestras.
c) El pulso es un vector de señal (está en voltios, no es potencia o energía). Piense
detenidamente cuántas veces de señal se debe atenuar el pulso para perder 6 dB.
d) En time_depel retardo debe desplazar el pulso temporal a la derecha (en el espectro no
se nota); y la atenuación debe reducir tanto la señal temporal como el espectro (la
primera en veces de señal, el segundo en dB —por lo tanto 6 dB—).
%6usx6Mhz=36 de retardo...y en atenuacion ponemos un 1(relacion dBveces)
%6us-->retardo
6MHz-->frecuencia muestreo
%Fórmula para calcular Atenuación expresada en veces
%Veces=10^(atenuacion/20)
%atenuación expresada en veces-->10^(0/20)=1-->caso A
y=atade(x,1,36);
time_dep(y,Tm,1,s,'log');
pulso
V (voltios)
1
0.5
0
0
0.5
1
1.5
2
2.5
3
3.5
4
t (sg)
4.5
-5
x 10
100
dBm
0
-100
-200
0
0.5
1
1.5
Hz
2
2.5
%0 de retardo...Relacción en tension= 10 elevado
(dB:20)=10^(6/20)=1,995=2
%caso B
z=atade(x,2,0);
figure(2)
time_dep(z,Tm,1,s,'log');
3
6
x 10
17. pulso
V (voltios)
0.8
0.6
0.4
0.2
0
0
0.5
1
1.5
2
2.5
3
3.5
4
t (sg)
4.5
-5
x 10
100
dBm
0
-100
-200
0
0.5
1
1.5
Hz
2
2.5
3
6
x 10
5- Para simular el filtrado use la función del apéndice lpf. Observaciones: En el tiempo, el
filtrado debe estropear los flancos del pulso. En frecuencia, el filtrado debe reducir
apreciablemente los lóbulos secundarios a partir de la frecuencia de corte.
f=lpf(x,fm,fc,n);
6- Para simular la distorsión de fase use la función del apéndice disfase. Observaciones: a)
Con distorsión cúbica, la potencia a la que se eleva la recta (“pot”) es 3. b) La función
disfasedevuelve un vector con los valores de la transferencia del filtro que realiza la
distorsión deseada. (Es un vector complejo.) c) Por lo tanto, si la señal antes del filtrado es
x_in, la señal distorsionada, x_out, se puede obtener con el siguiente código:
x_in = x;
H = disfase(length(x_in),3); % Transferencia del filtro
H_mod = abs(H); % Módulo del filtro
H_ang = angle(H); % Fase del filtro
plot(H_mod), title('MODULO DE H')
plot(H_ang), title('FASE DE H')
X_in = fft(x_in); % Espectro de la señal a la entrada
X_out = X_in.*H; % La señal pasa por el filtro
x_out = real(ifft(X_out,length(X_out))); % Señal temporal
%comprobamos
time_dep (x_out, Ts, Z, 'Ejercicio 6', 'lin');
MODULO DE H
FASE DE H
1
4
1
3
1
2
1
1
0
1
-1
1
-2
1
1
-3
0
50
100
150
200
250
300
-4
0
50
100
150
200
250
300
18. 7- Ecualice la distorsión de fase. Para ello: a) Genere un filtro inverso (elemento a
elemento) al obtenido con disfase. Puede hacerlo así:
Heq = H.^(-1);
b) Pase la señal por el filtro ecualizador.
X_out2=X_out.*Heq;
x_out2 = real(ifft(X_out2,length(X_out2)));
c) Compruebe que efectivamente ecualiza: comparando su módulo y fase con el filtro H, y
estudiando con time_depla señal obtenida a su salida. (Podrá observar mejor la
ecualización de la distorsión si anula o ecualiza el filtrado paso bajo.)
time_dep (x_out2, Ts, Z, 'Ejercicio 7', 'log');
Distorsión No lineal
%Distorsión no lineal
%punto de compresión a 1d
a1=10
a2=0
a3=-0.1
fm=512%Frecuencia de muestreo
Tm=1/fm
N=256
fe1=34
fe2=40
Z=50
%1-A
A=0.01
t=0:Tm:(N-1)*Tm
sinusoide=A*sin(2*pi*30*t)
s='pulso'
time_dep(sinusoide,Tm,Z,s,'log')
%1-B
y=a1*sinusoide+a2*sinusoide.^2+a3*sinusoide.^3
figure(2)
time_dep(y,Tm,Z,s,'log')
%1-C
A2=7
sinusoide1=A2*sin(2*pi*30*t)
figure(3)
time_dep(sinusoide1,Tm,Z,s,'log')
%1-D
y1=a1*sinusoide1+a2*sinusoide1.^2+a3*sinusoide1.^3
figure(4)
time_dep(y1,Tm,Z,s,'log')
%2
Pin=-10:0.5:30
fori=1:length(Pin)
A2=sqrt(10^((Pin(i)-30)/10)*2*Z);
x=A2*sin(2*pi*30*t)
y=a1*x+a2*x.^2+a3*x.^3
Pout(i)= 10*log10(powmeter(y,fm,30,Pin(i),Z))//(+30)??????
G(i)= Pout(i) - Pin(i);
end
subplot(1,1,1),plot(Pin,G),grid,pause
19. %3
Gi = 20*log10(a1);
Pin = 10:0.5:35;
Pout_i = Pin + Gi ;
f1 = 30;
f2 = 34;
fori = 1:length(Pin)
A = sqrt(10^((Pin(i)-30)/10)*2*Z);
x1 = A*sin(2*pi*30*t);
x2 = A*sin(2*pi*fe1*t);
x = x1 + x2;
y = a1*x + a2*x.^2 + a3*x.^3;
Pout_3(i) = 10*log10(powmeter(y,fs,2*f1-f2,1,Z))+30; % batido
Pout_f(i) = 10*log10(powmeter(y,fs,f1,1,Z))+30; % fundamental con sat.
end
plot(Pin,Pout_3,Pin,Pout_f,Pin,Pout_i), grid, pause
20. PRACTICA 3
1- Cree un script para medir señales AM. Resetee el espacio de trabajo.
2- Valores iniciales: frecuencia de muestreo fs = 1024 Hz; número de muestras N =
1024; frecuencia de portadora fc = 128 Hz; potencia de AM −20 dBm (potencia de
portadora sola); moduladora sinusoidal de fm = 16 Hz; impedancia de trabajo Z =
50 Ω. (Como fs = N = 1024, la resolución espectral es de una muestra por Hz.)
fs=1024%Frecuencia Muestro
N=1024%Número de muestras
fc=128%Frecuencia de portadora
p_AM=-20%Potencia de Am en dBm(portadora sola)
fm=16%moduladora sinusoidal
Z=50
3- El programa debe pedir al usuario el valor del índice de modulación, m, en tanto
por uno. (Para ello, puede usar la instrucción input.)
m=input('Introduzca m en tanto por uno: ');
4- Genere un vector, t, con los instantes de muestreo. Calcule la amplitud, A, de la
portadora sin modular (a partir de los −20 dBm). Genere las señales moduladora
normalizada, xn, y modulada, y.
A=(sqrt(((10^(potenciaAm/10))*2*Z)/1000));//sacada de la
fórmula de potencia de portadora sola en dBm
t=0:T:(N-1)*T
xn=cos(wm*t);
y=A*(1+m*xn).*cos(wc*t);
21. 5- Con un índice de modulación del 50%, visualice con time_depla señal AM.
Compruebe y/o calcule sus parámetros:
a) Verifique fc y fm en el tiempo y el espectro (use el zoom para ver con detalle).
s=('Señal Am');
Tm=1/fm
Tc=1/fc
figure(2)
time_dep(y,Tm,Z,s,'log')
figure(3)
time_dep(y,Tc,Z,s,'log')
b) Lea en el espectro la potencia de portadora sola.
figure(1)
time_dep(y,T,Z,s,'log')
c) Mida la potencia de portadora sola con powmeter.
%Ancho de banda es 1
%Coincide con la primera formula de la pagina 5.(Potencia de
portadora
potPortadoraSola=powmeter(y,fs,fc,1,Z);
22. d) Lea en el espectro y mida con powmeterla potencia de la banda lateral superior.
%Coincide con la tercera formula de la pagina 5.(Potencia de la banda
%lateral superior)Sumarfc+fm
potBandaLateralSuperior=powmeter(y,fs,fc+fm,1,Z);
potBandaLateralInferior=powmeter(y,fs,fc-fm,1,Z);
e) Calcule la potencia total de AM (sumando en unidades naturales, por supuesto).
potenciaTotal=(potPortadoraSola+2*potBandaLateralSuperior
f) Calcule la potencia equivalente de pico, PEP.
PEP=((A^2)*((1+m)^2))/(2*Z)
g) Mida la diferencia en dB entre la potencia de portadora sola y la potencia de
una banda lateral, ΔP(dB). A partir de ese valor, calcule el índice de modulación.
Compare con el valor introducido (0,5).
DifP=10*log10(potPortadoraSola/potBandaLateralSuperior=powmeter(y,fs,f
c+fm,1,Z);)=10*log10(potPortadoraSola)10*log1o(potBandaLateralSuperior)
DifP=10*log10(potPortadoraSola)-10*log1o(potBandaLateralSuperior)
m=(4/(10^(DifP/10)))^0.5
h) En el tiempo, mida los valores máximo y mínimo de la envolvente. Con esos
valores, calcule de nuevo el índice de modulación. Compare con el valor
introducido.
//Código de Pepe, por eso no coincide con lo anterior….
A=(sqrt(((10^(potenciaAm/10))*2*Z)/1000));
t=0:T:(N-1)*T
xn=cos(wm*t);
y=A*(1+m*xn).*cos(wc*t);
s='señalAM';
time_dep(y,1/fs,Z,s,'log');
s='señalAM';
time_dep(y,1/fs,Z,s,'log');
pc=powmeter(y,fs,fc,1,Z)
p1bl=powmeter(y,fs,(fc+fm),1,Z)
pt=pc+2*p1bl
PEP=((A^2)*((1+m)^2))/(2*Z)
DifP=10*log10(pc/p1bl)
23. m=(4/(10^(DifP/10)))^0.5
señalAM
0.4
0.3
0.2
V (voltios)
0.1
0
-0.1
-0.2
-0.3
-0.4
0
0.1
0.2
0.3
0.4
0.5
t (sg)
0.6
0.7
0.8
0.9
1
0
-20
-40
dBm
-60
-80
-100
-120
-140
-160
0
100
200
300
Hz
400
500
600
6- Ahora, varíe el valor del índice de modulación, m, entre 0 y 100%. Visualice la
señal AM para cada valor de m. Observe cómo cambia la señal, tanto en el tiempo
como en el espectro. Saque conclusiones.
fs=1024;
N=1024;
fc=128;
fm=16;
Z=50;
PC=-20;
m=input('Introduzca el indice de modulacion m (en tanto por 1) : ')
T=1/fs;
t=0:T:(N-1)*T;
Pc=(10^(PC/10))/1000
A=(Pc*2*Z)^0.5
xn=cos(2*pi*fm*t);
y=A*(1+xn*m).*cos(2*pi*fc*t);
s='señalAM';
time_dep(y,1/fs,Z,s,'log');
pc=powmeter(y,fs,fc,1,Z)
p1bl=powmeter(y,fs,(fc+fm),1,Z)
pt=pc+2*p1bl
PEP=((A^2)*((1+m)^2))/(2*Z)
DifP=10*log10(pc/p1bl)
m=(4/(10^(DifP/10)))^0.5
25. Indice de modulación m=1
señalAM
V (voltios)
0.1
0.05
0
-0.05
-0.1
0
0.1
0.2
0.3
0.4
0.5
t (sg)
0.6
0.7
0.8
0.9
1
0
dBm
-50
-100
-150
-200
0
100
200
300
Hz
400
500
600
7- Genere un índice de modulación aleatorio (0 < m < 1). Puede usar la función rand.
Genere la señal AM correspondiente, y visualícela con time_dep. Mida ΔP(dB) y
calcule m. Compare el valor generado con el calculado.
//Ponemos rand(m) que nos da un valor aleatorio de m
rand(m)
ans = 0.9058
T=1/fs;
t=0:T:(N-1)*T;
Pc=(10^(PC/10))/1000
A=(Pc*2*Z)^0.5
xn=cos(2*pi*fm*t);
y=A*(1+xn*m).*cos(2*pi*fc*t);
s='señalAM';
time_dep(y,1/fs,Z,s,'log');
Y luego:
p1bl=powmeter(y,fs,(fc+fm),1,Z)
pt=pc+2*p1bl
DifP=10*log10(pc/p1bl)
m=(4/(10^(DifP/10)))^0.5
26. 8- Por último, estudie señales digitales de amplitud ASK. Para ello:
a) Genere una señal moduladora binaria con pulsos cuadrados de ±1 V, y régimen
simbólico de 64 baudios (luego el régimen binario es de 64 bits/s). Tendrá que muestrear
cada uno de los símbolos binarios con 1024/32 = 32 muestras (en la parte digital de la
asignatura se explican los conceptos necesarios para entender esto). Es conveniente que
escriba un código que aproveche la potencia matricial/vectorial de MATLAB, evitando el
uso de bucles y sentencias tipo if. La siguiente línea de código le puede servir de
inspiración; estudie detenidamente qué es lo que hace:
aux = 4*(rand(1,20)>0.5)-2
Con la moduladora digital, genere una AM al 100% (m = 1). La señal modulada
resultante es una modulación digital de amplitud, de nombre 2-ASK. Visualice con
time_depla 2-ASK. Preste especial atención a la forma del espectro y a la situación de sus
nulos.
d) Genere una señal moduladora cuaternaria (de 4 símbolos diferentes) con pulsos
cuadrados de ±1 V y ±3 V, y régimen simbólico de 64 baudios (luego el régimen
binario es de 128 bits/s). Trabaje con 32 muestras por símbolo. Con la moduladora
digital, genere una AM al 100% (m = 1). La señal modulada resultante es una
modulación digital de amplitud, de nombre 4-ASK. Visualice con time_depla 4-ASK.
Preste especial atención a la forma del espectro y a la situación de sus nulos.
27. PRACTICA 4
1- Valores iniciales: frecuencia de muestreo fs = 1024 Hz; número de muestras N = 1024;
frecuencia de portadora fc = 200 Hz; potencia de FM −20 dBm; moduladora
sinusoidal de fm = 16 Hz; desviación máxima de frecuencia 20 Hz; impedancia de
trabajo Z = 50 Ω.
fs=1024;
N=1024;
fc=200;
Pfm=-20;
fm=16;
Dfm=20;
Z=50;
Ts=1/fs;
Tm=1/fm;
2- Como posteriormente debe variar la desviación de frecuencia y la frecuencia
moduladora, es conveniente que el programa pida dichos datos al usuario (use el
comando input).
Df=input('Introduce la maximadesviacion de frecuencia:')
fmod=input('Introduce la frecuencia moduladora')
3- Calcule, y muestre por pantalla: la amplitud de la señal FM; el índice de modulación;
el ancho de banda de Carson. Genere un vector con los instantes de muestreo (no lo
muestre por pantalla).
PfmW= 0.01/1000;//Pasando dBm a Watios
A=sqrt(PfmW*2*Z); %Amplt.
BW=2*(fm+Df);
%Ancho del tio Carson
%Genere vector de instantes de muestreo:
t=0:Ts:(N-1)*Ts;
4- Genere la señal moduladora normalizada (tono tipo coseno). Genere la integral de la
señal moduladora, también normalizada. Genere la señal FM.
beta=Df/fm;
xn=cos(2*pi*fm*t);
dxn=sin(2*pi*fm*t);
y=A*cos((2*pi*fc*t)+beta*dxn);
5- Visualice la señal moduladora con time_dep. Compruebe sus parámetros:
functiontime_dep(y,Ts,Z,'Titulo','log')
%
% function time_dep(x,T,Z,s,lin_log)
28. %
% Esta función representa en la parte superior la señal en el dominio
% del tiempo, y en la parte inferior la d.e.p.
%
% Parametros de entrada:
% ......................
% x: señal a analizar (real)
% T: periodo de muestreo
% Z: impedancia (ohmios)
% s: título que se quiere aparezca
% lin_log: representación lineal ('lin') o logaritmica ('log')
%
% 06/02/07
%
a=length(x);
subplot(211),plot((0:a-1)*T,x,'b'),grid
xlabel('t (sg)'),ylabel('V (voltios)')
title(s)
x1=fft(x)/a;
y=x1.*conj(x1);
y=[y(1) 2*y(2:a/2)]/real(Z);
eje=(1/T)*(0:a/2-1)/a;
aux=(lin_log(1:3) =='lin');
if sum(aux)==3
subplot(212),plot(eje,y*1e3,'b')
ylabel('mw')
else
subplot(212),plot(eje,10*log10(y*1e3+eps),'b')
ylabel('dBm')
end
grid,xlabel('Hz')
pause
% Fin de la función time_dep
a) Verifique fm en el tiempo y el espectro.
b) time_dep(y,fm,Z,'pulso','log')
b) Verifique la amplitud en el tiempo.
29. c) Calcule la potencia y verifique su valor en el espectro (con el zoom). Visualice la
señal FM con time_dep. Compruebe sus parámetros:
a) Verifique fc en el tiempo y el espectro.
time_dep(y,fc,Z,'pulso','log')
c) Verifique fm en el espectro.
d) time_dep(y,fm,Z,'pulso','log')
c) Varíe la desviación de frecuencia (pruebe con valores bastante más
bajos). Observe y anote cómo cambia la señal FM. d) Con la desviación
máxima de frecuencia fija a 50 Hz (para mejorar la visualización),
modifique fm a valores muy bajos (p. ej: 1 Hz). Observe y anote cómo
cambia la señal FM.
6- De nuevo con los valores iniciales (desviación máxima de frecuencia 20 Hz, fm = 16
Hz), mida con powmeter(en W y dBm) la potencia de FM contenida en diferentes
anchos de banda:
a) Mida, tomando un ancho de banda que incluya todas las deltas del espectro, la
potencia total de FM. Compruebe que sale el valor esperado.
potenciatotalFM=powmeter(y,fs,fc,250,Z)//250 es el ancho de
banda con el que cogemos todas las deltas->mirar grafica
b) Mida la potencia contenida en el ancho de banda de Carson. Compruebe que es
menor que la total, y calcule el porcentaje de la total incluido en la de Carson.
30. potenciaBW=powmeter(y,fs,fc,BW,Z)
porcentaje=(potenciaBW*100)/potenciatotalFM
c) Averigüe en el espectro cuántas deltas contiene el ancho de banda a 20 dB.
Calcule el ancho de banda a 20 dB. Mida la potencia incluida en el ancho de banda
a 20 dB. Compare el resultado obtenido para los anchos de banda de Carson y 20
dB.
pc=powmeter(y,fs,fc,1,Z)
p1bl=powmeter(y,fs,(fc+fm),1,Z)
7- Ahora tome una desviación máxima de frecuencia de 50 Hz, y una portadora de 250
Hz. Variando fm, y modificando por tanto el índice de modulación, cancele
determinadas líneas espectrales. Para ello, consulte en el apéndice los valores del
índice de modulación que anulan las funciones de Bessel de primera especie. En
concreto:
a) Cancele la delta a fc, mediante el primer nulo de J0. Para el valor del índice de
modulación que anula J0, calcule fm (redondeando al Hz, es decir: un valor entero
en Hz). Genere la nueva señal FM y visualícela con time_dep.
beta=2.406;
>>fm=Df/beta;
>> round(fm)
ans =
21
>>xn=cos(2*pi*fm*t);
>>dxn=sin(2*pi*fm*t);
>> y=A*cos((2*pi*fc*t)+beta*dxn);
>>time_dep(y,Tm,Z,'pulso','log')
>>time_dep(y,Tm,Z,'pulso','lin')
b) Cancele la delta a fc, mediante el segundo nulo de J0. Siga los pasos del apartado
(a).
>>beta=6.62;
>>fm=Df/beta;
round(fm)
ans =
8
>>xn=cos(2*pi*fm*t);
dxn=sin(2*pi*fm*t);
y=A*cos((2*pi*fc*t)+beta*dxn);
time_dep(y,Tm,Z,'pulso','log')
>>time_dep(y,Tm,Z,'pulso','lin')
31. c) Cancele las deltas de la primera banda lateral, mediente el primer nulo de
J1. Siga los pasos del apartado (a).
beta=3.8317;
>>fm=Df/beta;
round(fm)
ans =
13
>>xn=cos(2*pi*fm*t);
dxn=sin(2*pi*fm*t);
y=A*cos((2*pi*fc*t)+beta*dxn);
time_dep(y,Tm,Z,'pulso','log')
>>time_dep(y,Tm,Z,'pulso','lin')
d) Cancele las deltas de la segunda banda lateral, mediente el primer nulo de J2. Siga
los pasos del apartado (a).
>>beta=5.1356;
>>fm=Df/beta;
round(fm)
ans =
10
>>xn=cos(2*pi*fm*t);
dxn=sin(2*pi*fm*t);
y=A*cos((2*pi*fc*t)+beta*dxn);
time_dep(y,Tm,Z,'pulso','log')
time_dep(y,Tm,Z,'pulso','lin')
32. 8- Por último, debe medir la desviación máxima de frecuencia usando la función del
apéndice time_FM, que actúa como un osciloscopio. Tome los siguientes valores:
frecuencia de muestreo fs = 1024*32; número de muestras N = 1024*32; frecuencia de
portadora fc = 200 Hz; moduladora sinusoidal con fm = 16 Hz; desviación máxima de
frecuencia 20 Hz. Genere el nuevo vector con los instantes de muestreo, y la nueva
señal FM. Visualice la señal modulada con time_FM. Mida la desviación máxima de
frecuencia usando 2 periodos, de forma análoga a como se describe en la parte teórica
para 3 periodos.
>>xn=cos(2*pi*fm*t);
dxn=sin(2*pi*fm*t);
y=A*cos((2*pi*fc*t)+beta*dxn);
time_dep(y,Tm,Z,'pulso','log')
time_dep(y,Tm,Z,'pulso','lin')
33. Práctica 5
MODULACIÓN PRBS 9
-Moduladoras IQ
5.1En I y en Q hay dos niveles diferenciados. En cada instante
temporal, la combinación de valores de amplitud I y Q, llevados sobre el plano IQ, nos dan el
punto que define el símbolo digital que lleva la modulación.
5.2Fase en Coordenadas Polares
La amplitud es constante (la información solo modifica la fase), y que aparecen 4 fases
diferentes (QPSK =4PSK).Es una modulación de fase…
35. 5.4Constelación
Tiene 2 bits porque al tener 4 fases equiespaciadas…M=4 símbolos =2^2
Rb=k*Rs…..Rb/Rs=2…tiene dos niveles diferenciados..
5.5Espectro
6
36. MODULACIÓN BPSK:
1-Moduladoras IQ
I(t) tiene dos niveles mientras que q(t) es cte…
2Fase en Coordenadas Polares
Amplitud es cte….aparecen 2 fases distintas…es una modulación de fase…
39. Modulación 8PSK
1 Moduladoras IQ
Hay 5 niveles de amplitud no equiespaciados, por lo que en la constelación aparecerán 5
niveles ( es decir, tirando una línea vertical que coja los puntos).
2Fase en Coordenadas Polares
Amplitud es cte…aparecen9 fases diferentes…es una modulación de fase…
42. Modulación 16QAM
1-Moduladoras IQ
Tienen ambas 4 niveles diferenciados…La constelación también los tendrá…
2Fase en Coordenadas Polares
No es una modulación de fase….-->Amplitud no es cte..
51. 7Modulación QPSK con filtrado coseno alzado “Roll Cosine 0.5”
7.Moduladoras IQ
Constelación
52. 8
……………
9.1
QPSK
Desplazamiento de fase de 4 símbolos, desplazados entre sí 90º. Normalmente se usan
como valores de salto de fase 45º, 135º, 225º, y 315º. Cada símbolo aporta 2 bits. Suele
dividirse el flujo de cada bit que forman los símbolos como I y Q.
El diagrama de constelación muestra 4 símbolos equiespaciados. La asignación de bits a
cada símbolo suele hacerse mediante el código Gray, que consiste en que entre dos
símbolos adyacentes los símbolos solo se diferencian en 1 bit. Esto se escoge así para
minimizar la tasa de bits erróneos.
OQPSK
QPSK con datos I y Q desplazados temporalmente medio periodo de símbolo
Evitar transiciones simultáneas en ambos canales, (señal OQPSK)
se retrasa un tiempo de bit uno de los canales
9.2