problem in code for 16 qam

8 visualizaciones (últimos 30 días)
jordi10
jordi10 el 29 de En. de 2011
Comentada: Nouman Khan Safi el 31 de Ag. de 2022
Hi i wrote a code to seperate a binary signal to groups of 4 bits and maping them to a complex number,but didnt work and i cant find why. Please help!
clear all
close all
clc
a = [1 1 1 1 0 0 0 0 1 1 1 1]
k=1
for i=1:4:16
if a(i:i+3)=[0000]
b(k)=1-3j
else a(i:i+3)=[1111]
b(k)=3+3j
end
k=k+1
end

Respuesta aceptada

Vieniava
Vieniava el 29 de En. de 2011
add spaces in binary vectors:
a(i:i+3)=[0 0 0 0]
...
a(i:i+3)=[1 1 1 1]
  2 comentarios
Vieniava
Vieniava el 29 de En. de 2011
secondly, your a vector is too short.
Look: when i=16 yout try to acces to (i+3)=19th element of a.
Vieniava
Vieniava el 29 de En. de 2011
next, after "if" you should use isequal(a(i:i+3), [0 0 0 0])

Iniciar sesión para comentar.

Más respuestas (4)

jordi10
jordi10 el 3 de Feb. de 2011
that was helpfull thanks!!!!
  1 comentario
Vieniava
Vieniava el 4 de Feb. de 2011
the best "thanks" for hint-giver here is to single click on "Accept Answer"

Iniciar sesión para comentar.


jordi10
jordi10 el 5 de Feb. de 2011
can you please help me with the demodulation? here is my code,the problem is with the equality of matrix elements
clear all
close all
clc
a=[1 1 1 1 0 0 0 0 1 1 1 1]
%------ 16QAM MODULATION ------%
k=1
for i=1:4:length(a)
if a(i:i+3)==[0 0 0 0]
b(k)= -3-3j
elseif a(i:i+3)==[0 0 0 1]
b(k)= -3-1j
elseif a(i:i+3)==[0 0 1 0]
b(k) = -3+3j
elseif a(i:i+3)==[0 0 1 1]
b(k) = -3+1j
elseif a(i:i+3)==[0 1 0 0]
b(k) = -1-3j
elseif a(i:i+3)==[0 1 0 1]
b(k) = -1-1j
elseif a(i:i+3)==[0 1 1 0]
b(k) = -1+3j
elseif a(i:i+3)==[0 1 1 1]
b(k) = -1+1j
elseif a(i:i+3)==[1 0 0 0]
b(k) = 3-3j
elseif a(i:i+3)==[1 0 0 1]
b(k) = 3-1j
elseif a(i:i+3)==[1 0 1 0]
b(k) = 3+3j
elseif a(i:i+3)==[1 0 1 1]
b(k) = 3+1j
elseif a(i:i+3)==[1 1 0 0]
b(k) = 1-3j
elseif a(i:i+3)==[1 1 0 1]
b(k) = 1-1j
elseif a(i:i+3)==[1 1 1 0]
b(k) = 1+3j
elseif a(i:i+3)==[1 1 1 1]
b(k) = 1+1j
end
k = k+1
end
%------ 16QAM DEMODULATION ------%
v = 1
k = 1
for z=1:1:length(b)
if b(k) == [-3-3j]
x(v) = [0 0 0 0]
elseif b(k) == [-3-1j]
x(v) = [0 0 0 1]
elseif b(k) == [-3+3j]
x(v) = [0 0 1 0]
elseif b(k) == [-3+1j]
x(v) = [0 0 1 1]
elseif b(k) == [-1-3j]
x(v) = [0 1 0 0]
elseif b(k) == [-1-1j]
x(v) = [0 1 0 1]
elseif b(k) == [-1+3j]
x(v) = [0 1 1 0]
elseif b(k) == [-1+1j]
x(v) = [0 1 1 1]
elseif b(k) == [3-3j]
x(v) = [1 0 0 0]
elseif b(k) == [3-1j]
x(v) = [1 0 0 1]
elseif b(k) == [3+3j]
x(v) = [1 0 1 0]
elseif b(k) == [3+1j]
x(v) = [1 0 1 1]
elseif b(k) == [1-3j]
x(v) = [1 1 0 0]
elseif b(k) == [1-1j]
x(v) = [1 1 0 1]
elseif b(k) == [1+3j]
x(v) = [1 1 1 0]
elseif b(k) == [1+1j]
x(v) = [1 1 1 1]
end
k = k + 1
v = v + 1
end
  1 comentario
Nouman Khan Safi
Nouman Khan Safi el 31 de Ag. de 2022
if resolved this issue you can check it out
clear all
close all
clc
a=[1 1 1 1 0 0 0 0 0 0 1 0];
fprintf('Message Signal:\n')
disp(a)
%------ 16QAM MODULATION ------%
k=1;
for i=1:4:length(a)
if a(i:i+3)==[0 0 0 0]
b(k)= -3-3j;
elseif a(i:i+3)==[0 0 0 1]
b(k)= -3-1j;
elseif a(i:i+3)==[0 0 1 0]
b(k) = -3+3j;
elseif a(i:i+3)==[0 0 1 1]
b(k) = -3+1j;
elseif a(i:i+3)==[0 1 0 0]
b(k) = -1-3j;
elseif a(i:i+3)==[0 1 0 1]
b(k) = -1-1j;
elseif a(i:i+3)==[0 1 1 0]
b(k) = -1+3j;
elseif a(i:i+3)==[0 1 1 1]
b(k) = -1+1j;
elseif a(i:i+3)==[1 0 0 0]
b(k) = 3-3j;
elseif a(i:i+3)==[1 0 0 1]
b(k) = 3-1j;
elseif a(i:i+3)==[1 0 1 0]
b(k) = 3+3j;
elseif a(i:i+3)==[1 0 1 1]
b(k) = 3+1j;
elseif a(i:i+3)==[1 1 0 0]
b(k) = 1-3j;
elseif a(i:i+3)==[1 1 0 1]
b(k) = 1-1j;
elseif a(i:i+3)==[1 1 1 0]
b(k) = 1+3j;
elseif a(i:i+3)==[1 1 1 1]
b(k) = 1+1j;
end
k = k+1;
end
fprintf('Modulated Signal \n')
disp(b)
%------ 16QAM DEMODULATION ------%
v = 1;
k = 1;
r = [];
for z=1:1:length(b)
if b(k) == [-3-3j]
r(length(r)+1:length(r)+4) = [0 0 0 0 ];
elseif b(k) == [-3-1j]
r(length(r)+1:length(r)+4) = [0 0 0 1 ];
elseif b(k) == [-3+3j]
r(length(r)+1:length(r)+4) = [0 0 1 0 ];
elseif b(k) == [-3+1j]
%x(v) = [0 0 1 1]
r(length(r)+1:length(r)+4) = [0 0 1 1 ];
elseif b(k) == [-1-3j]
r(length(r)+1:length(r)+4) = [0 1 0 0 ];
elseif b(k) == [-1-1j]
r(length(r)+1:length(r)+4) = [0 1 0 1 ];
elseif b(k) == [-1+3j]
r(length(r)+1:length(r)+4) = [0 1 1 0 ];
elseif b(k) == [-1+1j]
r(length(r)+1:length(r)+4) = [0 1 1 1 ];
elseif b(k) == [3-3j]
r(length(r)+1:length(r)+4) = [1 0 0 0 ];
elseif b(k) == [3-1j]
r(length(r)+1:length(r)+4) = [1 0 0 1 ];
elseif b(k) == [3+3j]
r(length(r)+1:length(r)+4) = [1 0 1 0 ];
elseif b(k) == [3+1j]
r(length(r)+1:length(r)+4) = [1 0 1 1 ];
elseif b(k) == [1-3j]
r(length(r)+1:length(r)+4) = [1 1 0 0 ];
elseif b(k) == [1-1j]
r(length(r)+1:length(r)+4) = [1 1 0 1 ];
elseif b(k) == [1+3j]
r(length(r)+1:length(r)+4) = [1 1 1 0 ];
elseif b(k) == [1+1j]
r(length(r)+1:length(r)+4) = [1 1 1 1];
end
k = k + 1;
v = v + 1;
end
fprintf('Demodulated Singal:\n')
disp(r)

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 5 de Feb. de 2011
Encoding, everything at once:
LuT = [-3 -1 +3 +1];
A = reshape(A, 4, []);
b = LuT(A(1,:)*2+A(2,:)) + j*LuT(A(3,:)*2+A(4,:));
Decoding, everything at once:
RLut = [0 0; nan nan; 0 1; nan nan; 1 1; nan nan; 1 0].';
x = reshape(RLut(:,[real(b);imag(b)] + 4),4,[]).';

Hrasek
Hrasek el 18 de Feb. de 2011
do you know modem.qammod function? Check it out

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by