Somme

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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.