Mientras no posteaba, trabajabe en esto, así que estoy seguro que a más de alguien le servirá este pequeño algoritmo en matlab.}
%MODULACION Y DEMODULACION AM
%PROGRAMA PARA REALIZAR LA MODULACION Y DEMODULACION DE UNA SENAL
close all
clear all
fm=input(’Introduzca frecuencia de muestreo: ‘);
fs=input(’Introduzca frecuencia de la señal: ‘);
fc=input(’Introduzca frecuencia de la señal portadora: ‘);
%MODULACION
t=0:1/fm:5; %definiendo el tiempo real
L=length(t); %sacando la longitud del vector tiempo
f1=sin(2*pi*fs*t); %senal de informacion
subplot(2,2,1); plot(t(1:500),f1(1:500),’r');title(’senal de entrada’),grid on,xlabel(’tiempo’),ylabel(’m(t)’)
f2=cos(2*pi*fc*t); %creando cosenoidal para lograr la modulacion
subplot(2,2,2); plot(t(1:100),f2(1:100));title(’señal portadora’),grid on,xlabel(’tiempo’),ylabel(’p(t)’)
f3=f1.*f2; %multiplicacion de las dos funciones
subplot(2,2,3:4); plot(t(1:500),f3(1:500));title(’señal modulada’),grid on,xlabel(’tiempo’),ylabel(’m(t)*p(t)’)
hold on
plot(t(1:500),f1(1:500),’r')
pause
g1=abs(fftshift(fft(f1)))/L; %transformando en frecuencia f1
k=[(-L/2)+1:L/2];
k1=(1/(0.795*2*pi))*k;
figure
subplot(3,1,1), plot(k1,g1),title(’espectro de magnitud de la senal de entrada’),grid on,xlabel(’frecuencia’),ylabel(’m(f)’)
g2=abs(fftshift(fft(f2)))/L; %transformando en frecuancia f2
subplot(3,1,2); plot(k1,g2), title(’espectro de magnitud de la senal portadora’),grid on,xlabel(’frecuencia’),ylabel(’p(f)’)
g3=abs(fftshift(fft(f3)))/L; %transformando en frecuencia f3
subplot(3,1,3); plot(k1,g3),title(’espectro de magnitud de la senal modulada’),grid on,xlabel(’frecuencia’),ylabel(’m(f) conv p(f)’)
pause
%DEMODULACION
%asumiendo cero perdidas en el medio
f4=f3.*f2; %demodulando
figure %figura 3
subplot(2,2,1:2);plot(t(1:500),f4(1:500)),title(’senal demodulada’),grid on,xlabel(’tiempo’),ylabel(’R(t)’)
g4=abs(fftshift(fft(f4)))/L; %transformando en frecuencia la senal demodulada
subplot(2,2,3:4);plot(k1,g4),title(’espectro de magnitud de la senal demodulada’),grid on,xlabel(’frecuencia’),ylabel(’R(f)= m(f) conv p(f)’)
pause
%FILTRO
[b,a]= butter(15,3*fs/(fc/2)); %se generan los parametros del filto
Fx=filtfilt(b,a,f4); %creando el filtro pasa banda
[H,W] = freqz(b,a,15);
figure
plot(abs(H),’r'),grid on,xlabel(’frecuencia’),ylabel(’magnitud’),title(’filtro’); %graficando el filtro
pause
figure
plot(t(1:1000),Fx(1:1000)),title(’comparacion entre la senal filtrada y original{m(t)}’), grid on,xlabel(’tiempo’),ylabel(’amplitud’)
hold on
plot(t(1:1000),f1(1:1000),’r'),legend(’senal filtrada’,’senal original’) %se grafican la senal original y la senal recuperda
%se ha modulado y demodulado una senal
Ejemplo de corrida
Introduzca frecuencia de muestreo: 1000
Introduzca frecuencia de la señal: 4
Introduzca frecuencia de la señal portadora: 100

Se muestran las gráficas de la señal que quiere ser transmitida, la portadora cosenoidal y el producto de ambas con su respectiva envolvente.

Se muestran los espectros de magnitud en frecuencia de las gráficas anteriores respectivamente.

Asumiendo cero pérdidas en el medio.
Aquí se inicia la demodulación multiplicando la señal modulada nuevamente por una cosenoidal idéntica a la portadora que además deben estar sincronizadas en fase.
También se muestra el espectro de magnitud en frecuencia de dicha señal. Este gráfico nos dice que ya tenemos nuevamente nuestra señal original y que es necesario filtrar esta señal para recuperarla.

Este es el filtro pasa banda que necesitamos por que nos dejará pasar sólo bajas frecuencias.

Podemos ver el resultado del proceso de modulación y demodulación.
Observaos que en efecto tenemos la señal original, sólo que la amplitud de dicha señal es ahora menor, pero al tener la forma tenemos toda la información, aquí la señal para ser utilizada físicamente tendría que pasar por una etapa de amplificación.

Estoy cursando la materia de comunicaciones analógicas y efectivamente tengo que hacer una práctica de modulación AM.
corrí el algoritmo en MATLAB que hiciste, pero me marca un error, es este:
??? Error using ==> /
Matrix dimensions must agree.
??? Error using ==> edit
Can’t edit the directory ‘/’.
No soy experto en MATLAB, así que te pido ayuda para solucionar esto!
gracias!
June 24th, 2008 at 7:04 pm
q raro que te aparezca un error….a lo mejor en el copiado y pegado algo se quedo, tampoco se que version de matlab estas ocupando, bueno q creo que no hay ninngun comando especial.
mejor te voy a enviar el archivo .m a tu correo
a lo mejor asi funciona
por que a mi no me da ese error
saludos
June 25th, 2008 at 8:47 am
ya te lo envia a romd_7@hotmail.com
espero te funcione
June 25th, 2008 at 8:56 am
Hola quisiera tener tu ayuda, estoy tratando de diseñar un filtro pasabajo de una modulacion con portadora= 100KHz y mensaje de 30Hz, el tema es que no puedo diseñarlo, no me funciona tengo errores…tu me podrias ayudar?? soy novato en esto de matlab
agradeciendo tu disposicion
June 26th, 2008 at 6:40 pm
@Cristian:
Fijate especialmente en la funcion butter de matlab que te creara el orden del filtro dependiendo de tus frecuencias, acordata que en matlab es super importante(mas importante q las otras freqs) la frecuencia de muestreo de la senal.
butter te creara los parametros del filtro, y se los hay funciones como filter, filtfilt que te filtran la senal con los parametros creados con butter.
revisa bien las frecuencias que salen en este mismo algoritmo en la funcion butter que ahi esta la solucion al problema
June 26th, 2008 at 9:30 pm
mmmmm me complica un monton…como te decia soy novato…que es lo q debo ahcer para diseñarlo con estos datos?? mensaje 30Hz y portadora de 100KHz…please ayudame
saludos desde chile
June 27th, 2008 at 4:46 pm
fs=input(’Introduzca frecuencia de la señal: ‘);
fc=input(’Introduzca frecuencia de la señal portadora: ‘);
.
.
.
[b,a]= butter(15,3*fs/(fc/2))
June 27th, 2008 at 5:55 pm
Hola!
He probado el codigo de matlab para la modulacion AM con el ejemplo que has publicado y ha salido igualito, sin embargo no entiendo que es eso de frecuencia de muestreo y frecuencia de la señal. Por ejemplo si tengo una señal de voz que es de casi 4k, que debo introducir para modularla en AM?
espero una pronta respuesta, muchas gracias
August 3rd, 2008 at 3:14 pm
hola estoy cursando comunicaciones I y me mandaron a hacer un modulador y un demodulador fm, ya tengo el modulador listo pero tengo problemas para generar el codigo de demodulacion fm en matlab, por favor agradeceria su pronta ayuda, si pueden enviarme un archivo en matlab a mi correo seria mejor, gracias!!
August 12th, 2008 at 3:15 pm
@Luis carlos:
la frecuencia de muestreo es mucho mas importante para matlab por q matlab no veria diferencia trabajar con un tiempo por ejemplo 1 segundo o 1000 segundos mientras el numero de muestras sea el mismo….
la frecuencia de la senal en ese caso la definimos para una cosenoidal cos(2pi*f*t)….pero para una senal de musica ya no podemos hablar de frecuencia…..por q la senal no es periodica…..los 4kbps signifcan la compresion del archivo, una tasa de cambio de informacion por unidad de tiempo….entre mayor sea ese numero con mejor calidad sonara la cancion por que tendra mayor numero de muestras en funcion del tiempo…..
August 13th, 2008 at 11:05 am
@maria fernanda:
con todo gusto te mando el archivo pero no se si te sirva por que vos queres hacer una modulacion fm y ese ya es otro rollo, aunque creo poder ayudarte.
nota:
esta es la modulacion am mas burda, o la que sale de las transformadas de frecuencia, existen muchos tipos de modulacion AM
August 13th, 2008 at 11:09 am
Hola.. Probé la simulación que que dejaste en esta página y me parece excelente.. No tuve ningún problema a la hora de la simulación.. Bueno solo que tuve que arreglar las comillas pero eso no nada del otro mundo.. Me gustaría que me mandaras a mi correo simulaciones en FM.. Por favor..
February 16th, 2009 at 7:24 am
La realidad es que cuando se entiende a la perfección la teoría de lo que se quiere programar, hacerlo es sencillo, en este caso no hay nada que sea del otro mundo…casi que solo se esta graficando las señales….
Matlab es una excelente herramienta y la modulación un tema muy grande, vamos a ver si nos ponemos las pilas para seguir haciendo librería sobre modulación AM y modulación FM
February 19th, 2009 at 7:45 pm
P.D.
yo soy el mismo KS3….eso es cosa del pasado
February 19th, 2009 at 7:46 pm
estoy usando matlab 7 corri el codigo y me parece ??? Error using ==> mrdivide
Matrix dimensions must agree.
lo hice a mano para ver si era un error del cpy page y me aparece el mismo error me gustaria que me lo mandara al correo en .m para ver si me funciona que matlab utilizo para este codigo?
March 9th, 2009 at 8:40 am
Hola…
Estoy trabajando con el Matlab 6.1, corri tu algoritmo cambie las comillas y me genera error, no se que estoy haciendo mal.
Te pido el favor si me puedes enviar el archivo para darle solucion a mi problema.
Muchas gracias!!!
March 17th, 2009 at 9:09 pm
puedes ayudarme con la simulacion de fm en matlab simulink (modulador y demodulador)
April 7th, 2009 at 1:14 pm
Que tal compañero,
ayudame con la explicacion del codigo (modulacion y demodulacion) especialmente sobre la modulacion, y si puedo ponerle COS en vez de SEN,, en la señal modulante,,,
recien lo copie y voy a analizarlo en casa, pero en todo caso acolitame con una explicacion mas detallada de cada linea de codigo… gracias de antemano
April 30th, 2009 at 2:31 pm
holap,
He probado el codigo de matlab para la modulacion AM con el ejemplo que has publicado pero me sale errores.. no se muy bien como utilizar el programa.
Podrias ayudarme o mandarme el ejemplo q hiciste directo a mi mail por fa.. stoy en examenes y seria chevere ver este ejemplo simulado en matlab, me ayudaria para estudiar.
GRACIAS
July 1st, 2009 at 9:34 pm
pues para el examen no creo que te quede tiempo de probar, pero te animo a que jugues un poco con matlab, asi se aprende mucho, aprender a corregirle los errores por que el mismo matlab te indica donde esta el error en el codigo del subprograma, la realidad no soy un experto aunque dentro de poco continuare subiendo algoritmos de este tipo, que sirva a entender estos temas que se ven en la universidad.
saludos
July 2nd, 2009 at 10:20 am
hola quisiera saber si tu trabajas con el software proteus combinado con matlab a traves de “virtual serial port” necesito ayuda
July 17th, 2009 at 2:51 pm
La combinacion proteus matlab nunca la he utilizado
July 18th, 2009 at 5:49 pm
Lo he probado hoy y sale muy bien..excelente!
August 9th, 2009 at 6:19 pm
HOLA! podrias enviarme el archivo a mi correo me urgue! y te lo agradeceria, muchas gracias mi correo es:
ebfime@hotmail.com
August 13th, 2009 at 9:54 am
al copiar y pegar deberia funcionar correctamente
August 13th, 2009 at 2:27 pm
saludos cordiales
amigo ayudame porfa
a l mejor tu sabes tambien simukink necesito un sistema fm con ruido,
de antemano gracias
September 1st, 2009 at 9:57 am
amigo porfa si puedes enviarme a mi correo t lo agradecere mucho…
darenleo@hotmail.com
September 1st, 2009 at 10:02 am
hola william queria preguntarte algo con que fin estas colocando el filtro??? gracias
September 2nd, 2009 at 7:43 am
Que tal, alguien sabe de algun programa igual a este pero con modlacion FM gracias.
September 9th, 2009 at 3:40 pm
funciona perfecto gracias
September 13th, 2009 at 6:33 pm
disculpa me interesa mucho este programa lo corri y me marca errores, no se que pase, porfavor te pido si me puedes mandar el archivo te lo agradeceria mucho gracias
September 20th, 2009 at 1:28 pm
disculpa me interesa mucho este programa lo corri y me marca errores, no se que pase, porfavor te pido si me puedes mandar el archivo te lo agradeceria mucho gracias mi correo es jalvarian111@hotmail.com
September 20th, 2009 at 1:28 pm
creo que es importante tambien que aprendan a depurar los programas de matlab
September 20th, 2009 at 4:51 pm
Hola como estas, tengo un inconveniente y no me corre tu programa ¿sera que me lo puedes enviar? es para la version 6.1.0.
Gracias…
November 4th, 2009 at 7:02 pm
holaestoy intentando correr el codigo en matlab 7.5 pero me sae el siguiente error me puedes colaborar???
??? Undefined function or method ‘modulacion’ for input arguments of type ‘char’.
November 14th, 2009 at 6:27 pm
Hola! intenté utilizar tu código, pero no me corre, estoy utilizando la versión R2007a crees que sea por eso ?…de todos modos mandame el archivo m a mi correo si? porfas mi mail es knight_dakness@hotmail.com
gracias bro!
December 2nd, 2009 at 9:46 am
Hola! estoy realizando un trabajo y necesito el codigo que aparece arriba pero no me funciona, podrias enviarme la modulacion y demodulacion AM, me seria muy util, MUCHAS GRACIAS, javirota18@hotmail.com
Un saludo
December 16th, 2009 at 12:06 pm