Sida 1 av 1

Matlab; Amplitud modulering (ändrad)

Postat: 28 augusti 2007, 17:22:29
av Johan.o
Nu var det ett tag sedan jag satt vid Matlab och har glömt mycket.
Men jag bestämde mig för att testa lite olika modulationer
i Matlab, tänkte börja med AM för se på när den blir över- modulerad.

Av någon anledning som verkar modulationen bli 100% oberoende
vad man väljer för amplitud på 'message' (se matlab koden).
Här i exemplet har jag valt amplituden 0.1 , då borde det inte bli så.
hmm..

Tips på vad jag gör fel mottages tacksamt.


Kod: Markera allt

function am_modulering
% Generereing av am-modulerad signal

close all;
clear all;

fc= 50;                         % Carry frequency      (Hz)                 
fm= 1;                          % Message frequency    (Hz) 
samples= 100;                   % Number of samples per period, of the carry.
periods= 100;                   % Number of periods of the carry to plot.              

t_step= 1/(samples*fc);        
t_end= periods*(1/fc);            
t= [0: t_step :t_end];      
Wc= 2*pi*fc;
Wm= 2*pi*fm;

t= [0: t_step :t_end]; 
%---------------------------

carry= sin(Wc*t);
message= 0.1.*sin(Wm*t);

signal= message.*carry;

figure(1);
plot(t,signal);

edit: Ändrade Rubriken

Postat: 28 augusti 2007, 17:48:41
av MicaelKarlsson
Jag testkörde din kod och fick detta:
Bild

Tycker allt det ser ut som AM-modulering, eller har jag blivit alldeles snurrig??

Postat: 28 augusti 2007, 17:49:50
av oJsan
Det är helt rätt, får samma bild också.
Oavsett vad jag sätter för amplitud så ser bilden ut på samma sätt... men kolla på y-axelns gradering! :wink:

Edit:
Lägg till denna rad på slutet så ser det bättre ut:
axis([0,2,-1,1]);

Postat: 28 augusti 2007, 17:58:34
av MicaelKarlsson
Tittade inte på y-axeln utan kollade mest på kurvformen!! 8)

Postat: 28 augusti 2007, 18:02:54
av Johan.o
Jo visst, men jag menar att envelopen går ända ner till noll.. oberoende av
meddelandets amplitud.
det betyder ju i princip att modulationen är 100%,
modulerar jag bärvågen med en signal som har en mindre amplitud
än den så borde envelopen ju inte går ner till noll..


I denhär koden, där jag har lagt till en konstant så jag kan ställa modulationsindex med 'v', funkar det dock bra, men jag tycker det
borde gå att kunna få samma resultat även om man bara multiplicerar
carry och message.. hmm..

Kod: Markera allt


function am_modulering
% Generereing av am-modulerad signal

close all;
clear all;

fc= 50;                         % Carry frequency      (Hz)                 
fm= 1;                          % Message frequency    (Hz) 
samples= 100;                   % Number of samples per period, of the carry-frequency. 
periods= 100;                   % Number of periods of the carry to plot.              
v = 0.8;

t_step= 1/(samples*fc);        
t_end= periods*(1/fc);            
t= [0: t_step :t_end];      
Wc= 2*pi*fc;
Wm= 2*pi*fm;

t= [0: t_step :t_end]; 
%---------------------------

carry= sin(Wc*t);
message= (1+v.*sin(Wm*t));

signal= message.*carry;

figure(1);
plot(t,signal);



edit: problemet är nog inte matlab längre, utan snarare modulationskunskap för min del.. :roll:

Postat: 28 augusti 2007, 21:00:13
av Johan.o
hmm.. tror jag hajar nu..
Det första är ju AM utan bärvåg.. Så det är ju precis som det borde bli.
Sätter man en konstant framför meddelandet är det samma sak som att sätta en konstant framför hela uttrycket..

Tack för hjälpen, ibland tar det ett tag innan det klickar till.

Postat: 29 augusti 2007, 10:23:37
av MicaelKarlsson
de där klickarna brukar sprida en sorts tillfredsställelse som går utanpå det mesta!