Somme

Alleguiemna Messages postés 13 Statut Membre -  
Alleguiemna Messages postés 13 Statut Membre -
Bonsoir,

j'ai ce vecteur a1=(3 1 -1 1, -1 -3 -1 1, 1 3 1 -1)

je veut faire la somme de chaque 4 bit puis décider si la somme est positif le bit représentant les 4 bits est égal a 1 sinon il est égal a 0.

j'ai essayé avec ce code mais rien ne s'affiche.

le code contenant mon essai est le suivant:

nbits13=length(a1);
T=1;%Période
A=1;%Amplitude
figure(6);
subplot (2,1,1);
stairs(a1);
title('Multiplication de code de l''utilisateur 1 par le signal reçu');
xlabel('Temps');
ylabel('Amplitude');
axis([1 14 -4 A+3.5]);
grid on;
hold on;
for n=2:nbits13
line([n n],[a1(n) a1(n)])
line([n n+T],[a1(n) a1(n)])
if a1(n)~= a1(n-1)
line([n n],[0 0])
end
end

for i=1:length(a1)
for j=1:4
s=0;
s=sum(a1(j));
disp(s);
j++;
end
if(s>0)
des=1;
else
des=-1;
end
end

nbits14=length(des);
T=1;%Période
A=1;%Amplitude
subplot (2,1,2);
stairs(des);
title('Signal origine aprés décision de l''utilisateur 1');
xlabel('Temps');
ylabel('Amplitude');
axis([1 14 -1.5 A+0.5]);
grid on;
hold on;
for n=2:nbits14
line([n n],[des(n) des(n)])
line([n n+T],[des(n) des(n)])
if des(n)~= des(n-1)
line([n n],[0 1])
end
end

merci de m'aider.

2 réponses

  1. JulienJust Messages postés 164 Statut Membre 18
     
    Bonjour,

    On ne comprends pas très bien ce que tu veux faire avec ce vecteur (est-ce vraiment un vecteur, ou est-ce une matrice ?)...

    Et ton script est quasi-illisible sans les indentations...

    Cdlt
    0
  2. Alleguiemna Messages postés 13 Statut Membre
     
    bonjour,

    Réellement a1 est un signal ayant les amplitudes suivants( 3 1 -1 1 -1 -3 -1 1 1 3 1 -1), et je voudrais faire la déconvolution(chaque bits est codé par 4 pour le déconvolution les 4 bits sont représentés par un bit)
    je voudrais calculer la somme de chaque 4 bit puis décider si la somme est positif le bit est 1 sinon le bit est égal a -1.

    Dans mon travail j'ai 3 utilisateurs chacun émis un signal qui est codé par un code spécifique à chaque utilisateurs puis étalés.
    Ensuite la somme des signaux étalés est transmise dans un canal (qui ajoute un bruit a cette somme) vers les destinataires(qui sont les récepteurs).
    Chaque récepteur multiplie la somme qu'il reçoit par son propre code pour obtenir le signal lui est envoyé, c'est a cette étape je voudrais faire la déconvolution mais rien ne s'affiche.

    Le code suivant contient toute les étapes:
    clear all;
    close all;
    clc;
    us=3;
    m1=[1 -1 1];nb1=length(m1);
    c1=[1 -1 1 -1];L1=length(c1);
    b1=ones(1,L1);b0=-1.*ones(1,L1);

    %//utilisateur1//%--------------------------------------------------------

    mb1=[];mc1=[];
    for i=1:nb1
    if m1(i)==1
    mb1=[mb1 b1];
    cc1=c1;
    else
    mb1=[mb1 b0];
    cc1=c1;
    end
    mc1=[mc1 cc1];
    end

    %signal étalé

    tb1=mb1.*mc1;

    nbits1=length(mb1);
    T=1;%Période
    A=1;%Amplitude
    figure(1);
    subplot (3,1,1);
    stairs(mb1);
    title('Signal de l''utilisateur 1');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits1
    line([n n],[mb1(n) mb1(n)])
    line([n n+T],[mb1(n) mb1(n)])
    if mb1(n)~= mb1(n-1)
    line([n n],[0 1])
    end
    end

    nbits2=length(mc1);
    T=1;%Période
    A=1;%Amplitude
    subplot (3,1,2);
    stairs(mc1);
    title('Code d''étalement de l''utilisateur 1');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits2
    line([n n],[mc1(n) mc1(n)])
    line([n n+T],[mc1(n) mc1(n)])
    if mc1(n)~= mc1(n-1)
    line([n n],[0 1])
    end
    end

    nbits3=length(tb1);
    T=1;%Période
    A=1;%Amplitude
    subplot (3,1,3);
    stairs(tb1);
    title('Signal étalé de l''utilisateur 1');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits3
    line([n n],[tb1(n) tb1(n)])
    line([n n+T],[tb1(n) tb1(n)])
    if tb1(n)~= tb1(n-1)
    line([n n],[0 0])
    end
    end

    %//utilisateur2//%---------------------------------------------------------
    m2=[1 1 0];nb2=length(m2);
    c2=[1 1 -1 -1];L2=length(c2);
    b1=ones(1,L2);b0=-1.*ones(1,L2);

    mb2=[];mc2=[];
    for i=1:nb2
    if m2(i)==1
    mb2=[mb2 b1];
    cc2=c2;
    else
    mb2=[mb2 b0];
    cc2=c2;
    end
    mc2=[mc2 cc2];
    end

    %signal étalé

    tb2=mb2.*mc2;

    nbits4=length(mb2);
    T=1;%Période
    A=1;%Amplitude
    figure(2);
    subplot (3,1,1);
    stairs(mb2);
    title('Signal de l''utilisateur 2');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits4
    line([n n],[mb2(n) mb2(n)])
    line([n n+T],[mb2(n) mb2(n)])
    if mb2(n)~= mb2(n-1)
    line([n n],[0 1])
    end
    end

    nbits5=length(mc2);
    T=1;%Période
    A=1;%Amplitude
    subplot (3,1,2);
    stairs(mc2);
    title('Code d''étalement de l''utilisateur 2');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits5
    line([n n],[mc2(n) mc2(n)])
    line([n n+T],[mc2(n) mc2(n)])
    if mc2(n)~= mc2(n-1)
    line([n n],[0 1])
    end
    end

    nbits6=length(tb2);
    T=1;%Période
    A=1;%Amplitude
    subplot (3,1,3);
    stairs(tb2);
    title('Signal étalé de l''utilisateur 2');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits6
    line([n n],[tb2(n) tb2(n)])
    line([n n+T],[tb2(n) tb2(n)])
    if tb2(n)~= tb2(n-1)
    line([n n],[0 0])
    end
    end
    %//utilisateur3//%---------------------------------------------------------
    m3=[0 1 0];nb3=length(m3);
    c3=[-1 1 1 -1];L3=length(c3);
    b1=ones(1,L3);b0=-1.*ones(1,L3);

    mb3=[];mc3=[];
    for i=1:nb3
    if m3(i)==1
    mb3=[mb3 b1];
    cc3=c3;
    else
    mb3=[mb3 b0];
    cc3=c3;
    end
    mc3=[mc3 cc3];
    end

    %signal étalé

    tb3=mb3.*mc3;

    nbits7=length(mb3);
    T=1;%Période
    A=1;%Amplitude
    figure(3);
    subplot (3,1,1);
    stairs(mb3);
    title('Signal de l''utilisateur 3');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits7
    line([n n],[mb3(n) mb3(n)])
    line([n n+T],[mb3(n) mb3(n)])
    if mb3(n)~= mb3(n-1)
    line([n n],[0 1])
    end
    end

    nbits8=length(mc3);
    T=1;%Période
    A=1;%Amplitude
    subplot (3,1,2);
    stairs(mc3);
    title('Code d''étalement de l''utilisateur 3');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits8
    line([n n],[mc3(n) mc3(n)])
    line([n n+T],[mc3(n) mc3(n)])
    if mc3(n)~= mc3(n-1)
    line([n n],[0 1])
    end
    end

    nbits9=length(tb3);
    T=1;%Période
    A=1;%Amplitude
    subplot (3,1,3);
    stairs(tb3);
    title('Signal étalé de l''utilisateur 3');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits9
    line([n n],[tb3(n) tb3(n)])
    line([n n+T],[tb3(n) tb3(n)])
    if tb3(n)~= tb3(n-1)
    line([n n],[0 0])
    end
    end

    %//Somme des signaux sans et avec bruit//%---------------------------------

    tb=tb1+tb2+tb3;

    nbits10=length(tb);
    T=1;%Période
    A=1;%Amplitude
    figure(4);
    subplot (2,1,1);
    stairs(tb);
    title('Signal reçu sans bruit');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -4.5 A+3.5]);
    grid on;
    hold on;
    for n=2:nbits10
    line([n n],[tb(n) tb(n)])
    line([n n+T],[tb(n) tb(n)])
    if tb(n)~= tb(n-1)
    line([n n],[0 0])
    end
    end

    g=awgn(tb,10);
    nbits11=length(g);
    T=1;%Période
    A=1;%Amplitude
    subplot (2,1,2);
    stairs(g);
    title('(b) Signal reçu avec bruit');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -4.5 A+3.5]);
    grid on;
    hold on;
    for n=2:nbits11
    line([n n],[g(n) g(n)])
    line([n n+T],[g(n) g(n)])
    if g(n)~= g(n-1)
    line([n n],[0 0])
    end
    end
    %//Multiplication de la somme par le code de l'utilisateur1//--------------
    a1=mc1.*tb;
    for i=1:length(a1)
    for j=1:4
    s=0;
    s=sum(a1(j));
    disp(s);
    end
    if(s>0)
    des=1;
    else
    des=-1;
    end
    end

    nbits13=length(a1);
    T=1;%Période
    A=1;%Amplitude
    figure(6);
    subplot (2,1,1);
    stairs(a1);
    title('Multiplication de code de l''utilisateur 1 par le signal reçu');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -4 A+3.5]);
    grid on;
    hold on;
    for n=2:nbits13
    line([n n],[a1(n) a1(n)])
    line([n n+T],[a1(n) a1(n)])
    if a1(n)~= a1(n-1)
    line([n n],[0 0])
    end
    end

    nbits14=length(des);
    T=1;%Période
    A=1;%Amplitude
    subplot (2,1,2);
    stairs(des);
    title('Signal origine aprés décision de l''utilisateur 1');
    xlabel('Temps');
    ylabel('Amplitude');
    axis([1 14 -1.5 A+0.5]);
    grid on;
    hold on;
    for n=2:nbits14
    line([n n],[des(n) des(n)])
    line([n n+T],[des(n) des(n)])
    if des(n)~= des(n-1)
    line([n n],[0 1])
    end
    end

    j'espère que ça va vous guider.

    merci.
    0