Telecomunicaciones Analógicas [Link].
Guido Humberto Cayo Cabrera
Modulación FM en MATLAB
Código en Matlab para Señal de Modulación de Frecuencia
[Link]. Guido Humberto Cayo Cabrera
Sintaxis
y = fmmod (x, Fc, Fs, freqdev),
y = fmmod (x, Fc, Fs, freqdev, ini_phase),
Descripción
y = fmmod (x, Fc, Fs, freqdev) modula la señal de mensaje x con modulación de [Link]
señal portadora tiene una frecuencia Fc (Hz) y F frecuencia de muestreo (Hz), donde F debe ser
de al menos 2 * [Link] argumento freqdev es la desviación de frecuencia constante (Hz) de la
señal modulada.
y = fmmod (x, Fc, Fs, freqdev, ini_phase) especifica la fase inicial de la señal modulada, en
radianes.
Ejemplos
El código siguiente modula una señal multicanal utilizando fmmod y demodula utilizando
fmdemod.
Fs = 8000;% de la tasa de muestreo de la señal de
Fc = 3000;% frecuencia de la portadora
t = [0: F] / F;% los tiempos de muestreo
s1 = sin (2 * pi * 300 * t) 2 * sin (2 * pi * 600 * t);% Canal 1
s2 = sin (2 * pi * 150 * t) 2 * sin (2 * pi * 900 * t);% Canal 2
x = [S1, S2];% señal de dos canales de
dev = 50;% Desviación de la frecuencia de la señal modulada
y = fmmod (x, Fc, Fs, dev);% Modulo ambos canales.
z = fmdemod (y, Fc, Fs, dev);% demodular ambos canales.
Telecomunicaciones Analógicas [Link]. Guido Humberto Cayo Cabrera
Sr. estudiante de telecomunicaciones analógica:
Ecuación general de la modulación en frecuencia:
y(t) = Ac*cos(wc*t + Kf * Integral( xn(t)dt ) )
Teniendo en cuenta que el ancho de banda aproximado que va a ocupar tu señal modulada en
FM (de acuerdo con la regla de Carson) es B_FM = 2(fd + fm), siendo fd la máxima desviación
en frecuencia y fm el ancho de banda de la señal moduladora x(t), deberá definir su frecuencia
de muestreo de manera que sea por lo menos el doble (y yo te recomiendo que sea
apreciablemente mayor que ese mínimo de Nyquist) que la máxima frecuencia a representar.
Asimismo, para implementar la ecuación anterior necesita desarrollar la integral. No te
aconsejo utilizar las funciones de integración de Matlab, sino más bien aproximar la integral
por una acumulación. Para ello he programado el bloque acumula.m, cuyo código es el
siguiente:
function [sum] = acumula(x,t)
N=length(x);
acum=zeros(1,N);
delta_t=t(2)-t(1);
for i=1:N
if i==1
acum(i)=x(i)*delta_t;
else
acum(i)=acum(i-1)+delta_t*x(i);
end
end
sum=acum;
offset=0.5*(max(sum)+min(sum));
sum=sum-offset;
Posteriormente he definido el bloque llamado Modula_FM.m, que es:
function [y] = Modula_FM(x,t,Kf,wp,Amp)
xac=acumula(x,t);
y = Amp*cos(wp*t+2*pi*Kf*xac);
Donde Kf es la constante del modulador (en electrónica, se mide en Hz / V), wp la pulsación de
la portadora (que no la frecuencia, por lo que deberás introducir 2*pi*fp si define tu
frecuencia de portadora en Hz) y Amp la amplitud de la portadora.
Habrá tenido que definir previamente los siguientes parámetros: frecuencia de muestreo y
ventana de tiempos. A partir de ellos, defines los ejes de tiempos y frecuencias.
Posteriormente creas tu señal moduladora x(t), lo normal es que sea una sinusoide de
frecuencia mucho menor que la de la portadora.
Por cierto, si además le interesa visualizar el espectro de la señal modulada en FM, he
desarrollado otro fichero .m llamado Analiza_Espectro.m, que, dada una señal en el tiempo y
un eje de frecuencias, muestra el espectro de dicha señal de una manera similar a como
aparece en un analizador de espectros de radiocomunicaciones. El código es:
Telecomunicaciones Analógicas [Link]. Guido Humberto Cayo Cabrera
function [output_args] = Analiza_Espectro(x,f)
X = fftshift(fft(x));
Xm = abs(X);
plot(f,Xm)
Programa aplicativo de AM y FM
Telecomunicaciones Analógicas [Link]. Guido Humberto Cayo Cabrera
Telecomunicaciones Analógicas [Link]. Guido Humberto Cayo Cabrera
REFERENCIA BIBLIOGRÁFICA
Tomasi, W. (2003). Tomasi, Wayne. Sistemas de Comunicaciones Electrónicas, 4a Edición, Pearson Education,
ISBN 970-26-0316-1, pp 276-308, 796p, México, 2003.