problem in code for 16 qam
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
0 commentaires
Réponse acceptée
Plus de réponses (4)
jordi10
le 5 Fév 2011
1 commentaire
Nouman Khan Safi
le 31 Août 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)
Walter Roberson
le 5 Fév 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,[]).';
0 commentaires
Voir également
Catégories
En savoir plus sur QAM dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!