Somme

Fermé
Alleguiemna Messages postés 11 Date d'inscription dimanche 27 avril 2014 Statut Membre Dernière intervention 23 mai 2014 - 22 mai 2014 à 14:48
Alleguiemna Messages postés 11 Date d'inscription dimanche 27 avril 2014 Statut Membre Dernière intervention 23 mai 2014 - 23 mai 2014 à 10:41
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

JulienJust Messages postés 139 Date d'inscription mardi 25 juin 2013 Statut Membre Dernière intervention 2 septembre 2014 18
Modifié par JulienJust le 23/05/2014 à 09:38
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
Alleguiemna Messages postés 11 Date d'inscription dimanche 27 avril 2014 Statut Membre Dernière intervention 23 mai 2014
Modifié par Alleguiemna le 23/05/2014 à 11:19
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