problem in code for 16 qam
8 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
その他の回答 (4 件)
jordi10
2011 年 2 月 5 日
1 件のコメント
Nouman Khan Safi
2022 年 8 月 31 日
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
2011 年 2 月 5 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で QAM についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!