Standardy modemów wg. ITU serii V

1. V.21

2. V.22
3. V.22 bis
Pierwsze 2 bity w czwórce
Zmiana kw. fazowego w konstelacji 
(niezupełnie to samo, co fazy)
Zmiana fazy; zmiana fazy 
też przy nast. 2 bitach
00
1->2, 2->3, 3->4, 4->1
90
01
bez zmiany
0
11
1->4, 2->1, 3->2, 4->3
270
10
1->3, 2->4, 3->1, 4->2
180

Kod w Matlabie dla QAM:
N = 8; %liczba czwórek
k = 4; %liczba okresów na jedna czwórkę, rysowanych na wykresie
B(1,1) = 0;
B(1,2) = 0;
B(1,3) = 0;
B(1,4) = 0;
KW = 1;
P(1,1) = 1; %współrzędne x
P(1,2) = 1; %współrzędne y
x = 1; %znak x
y = 1; %znak y
inx = 1;
kat = atan(P(inx,2)/P(inx,1));
   for t = 1:k*314
      S(t+k*314*(inx-1)) = P(inx,2)*sin(kat + (t)/100) + P(inx,1)*cos(kat + (t)/100);
      S_plot(t+k*314*(inx-1)) = t+k*314*(inx-1) + i*S(t+k*314*(inx-1));
   end;
for inx = 2:N
   for inx2 = 1:4
      B(inx,inx2) = round(rand);
   end;
   fprintf('%d %d %d %d \n ', B(inx,1), B(inx,2), B(inx,3), B(inx,4));
   if B(inx,1) > 0 %czyli = 1
      KW = KW + 2;
      if B(inx,2) > 0 %czyli = 1
         KW = KW + 1; %zmiana o 3 ćwiartki
         if round (KW/2) == KW/2 %zmiana na ćwiartkę parzystą
            y = y*(-1);
            x = x;
         else
            x = x*(-1);
            y = y;
         end;
      else %zmiana o 2 ćwiartki
       x = x*(-1);
         y = y*(-1);
      end;
   end;
   if B(inx,1) < 1 %czyli = 0
      if B(inx,2) < 1 %czyli = 0
         KW = KW + 1;
         if round (KW/2) == KW/2 %zmiana na ćwiartkę parzystą
            x = x*(-1);
            y = y;
         else
            y = y*(-1);
            x = x;
         end;
      else
         x = x;
         y = y;
      end;
   end;
   if KW > 4
      KW = KW - 4;
   end;
   if round(KW/2) == KW/2 %ćwiartka 2 lub 4
      if B(inx,3) < 1 %czyli = 0
         P(inx,1) = 1;
      else
         P(inx,1) = 3;
      end;
  if B(inx,4) < 1 %czyli = 0
         P(inx,2) = 1;
      else
         P(inx,2) = 3;
      end;
   else
      if B(inx,3) < 1 %czyli = 0
         P(inx,2) = 1;
      else
         P(inx,2) = 3;
      end;
  if B(inx,4) < 1 %czyli = 0
         P(inx,1) = 1;
      else
         P(inx,1) = 3;
      end;
   end;
   P(inx,1) = x*P(inx,1);
   P(inx,2) = y*P(inx,2);
   fprintf('%d %d \n ', P(inx,1), P(inx,2));
   kat = atan(P(inx,2)/P(inx,1));
   for t = 1:k*314
      S(t+k*314*(inx-1)) = P(inx,2)*sin(kat + (t)/100) + P(inx,1)*cos(kat + (t)/100);
      S_plot(t+k*314*(inx-1)) = t+k*314*(inx-1) + i*S(t+k*314*(inx-1));
   end;
end;
plot(S_plot);

4. V.23

5. V.32 6. V.32 bis 7. V.32 terbo 8. V.34 9. V.90 10. V.92