IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Modulation Mono porteuse


Sujet :

Signal

  1. #1
    Membre du Club

    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 56
    Points
    56
    Par défaut Modulation Mono porteuse
    bonsoir ,

    Je suis entrain de modéliser avec matlab une chaine de transmission en utlisant la modulation monoporteuse.

    Le problème c'est que même si j'ajoute du bruit le signal reçu n'a pas d'erreur même si le SNR est trop faible.
    Je vous envoie le script et je compte sur vous

    Le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    clear; 
    clc ;
    close all;
    k=2; %Ordre de modulation%
    Nsymb=20;%Nbre de symbole
    N=16;% le taux d'échantillonage
    SNR=1; %rapport signal sur bruit en Db
     
    %---------Paramètres du filtre de mise en forme 
     
    g=ones(N,1);
    Eg=sum(abs(g).^2); % Eg=16
    g=g/sqrt(Eg);  % Eg=1 normalisation de l energie de l impulsion a l unité
    Eg=sum(abs(g).^2);
     
    %---------Generation des donnees binaires
     rand ('state', 13215);  randn ('state', 13215);
     data_tx=rand(Nsymb*k,1)>0.5; % Données logiques
     subplot(511);
     stem (data_tx,'r');grid on;
     
     
     %---------Mapping
     
     symb_tx=qam(data_tx,k);
     subplot(512);
     stem (symb_tx,'b');grid on;
    break;
     %--------constellation à l emission
    % scatterplot(symb_tx,1,0,'bo');grid on;%1 ne sauter aucun elt 0 commencer ar 0
     
     %--------Upsampling
     symb_tx_up=upsample(symb_tx,N);
     subplot(513);
     stem (symb_tx_up,'b');grid on;
     
     %---------Filtrage d'émission
     sig_tx=filter(g,1,symb_tx_up);
     subplot(514);plot (real(symb_tx_up),'r');grid on;
     
     %---------ajout du bruit blanc gaussien
    sig_rx=awgn(sig_tx,SNR,'measured');
    subplot(515);plot(real(sig_rx),'m');grid on;
     
     
    %--------Filtrage de reception %
     symb_rx_up=filter(g,1,sig_rx);
     figure(2);
     subplot(411);plot (real(symb_rx_up),'r');grid on;
     
     
    %-------downsampling(echantillonnage)
    symb_rx=symb_rx_up(N:N:end);
    subplot(412);stem(real(symb_rx),'m');grid on;
     
    % -------demapping
    data_rx=demodqam(symb_rx,k);
    subplot(413);stem(real(data_rx),'r');grid on;
     
     
    %--------constellation à la reception
     
    % scatterplot(symb_rx,1,0,'ro');grid on;
     
     
    %--------comparaison de données
     
    vec_err=xor(data_tx,data_rx);% on retrouve l erreur dans un seul point si on a pas d'erreur on retrouve 1
    N_err=sum(vec_err);
    subplot(414);stem(real(vec_err),'m');grid on;
    %Diagramme oeil
    eyediagram(symb_rx_up,N,1,0);% le 1 est la periode -t/2 et +t/2 le 0 est l offset
    grid on;
    la fonction QAM qui fait le mapping
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function out=qam(data,k)
    NSymb=length(data)/k;
    mat_bin=reshape(data,NSymb,k);
    vec_dec=bi2de(mat_bin);
    const=alphabet(k);
    out=const(vec_dec+1);%donnée en ligne
    out=out(:); %ts les elt de la matrice sous forme de colonne
    end
    Fonction alphabet pour les constelations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function alphabet = alphabet(k)
     
         switch k
         case  1 
                alphabet= [-1 1];
         case 2
                alphabet= [-1+j -1-j 1+j 1-j];
         case 4
                alphabet= [-1+j -1-j 1+j 1-j 3-j 3+j -3-j -3+j 1+3j 1-3j -1+3j -1-3j 3+3j 3-3j -3+3j -3-3j ];
     
         otherwise
                disp('Cette option n existe pas')
     
         end
    Fonction demoqam
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function data=demodqam(symb_rx,k)
    const=alphabet(k);
    for i=1:length(symb_rx)
    [dist(i) index(i)]=min(abs(symb_rx(i)-const));
    vec_dec(i)=index(i)-1;
    mat_bin=de2bi(vec_dec,k)>0.5;
    data=mat_bin(:);
    end

  2. #2
    Membre du Club

    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 56
    Points
    56
    Par défaut le schéma bloc
    je vous envoie aussi le schéma bloc pour plus de clareté.

    Merci pour votre aide
    Images attachées Images attachées  

Discussions similaires

  1. FFT d'un signal (modulation + porteuse)
    Par rollo dans le forum Signal
    Réponses: 3
    Dernier message: 24/05/2014, 01h17
  2. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  3. [Choix SGBD] Application mono-poste mais beaucoup de données
    Par Wavyx dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 16/03/2003, 18h24
  4. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50
  5. Sécuriser les Métadata IB en utilisation mono ?
    Par ADN75018 dans le forum Débuter
    Réponses: 23
    Dernier message: 31/01/2003, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo