DQPSK Modeluation&Demodulation Problem

1 view (last 30 days)
Ashur
Ashur on 17 Apr 2015
Edited: Ashur on 17 Apr 2015
Was trying to do DQPSK but when I was demodulating, everything looks good except the "01" input. My code will output "10" for both "01" & "10" input.
Thank you! Following is my code.
bit_transmit=round(rand(10,1));
qpsk_transmission=1+1j;
for bit_index1=1:2:length(bit_transmit)
bit_index2 = bit_index1+1;
if bit_transmit(bit_index1) == 1 && bit_transmit(bit_index2)==1
new_symbol = qpsk_transmission(end)*exp(1j*pi); %11
end
if bit_transmit(bit_index1) == 0 && bit_transmit(bit_index2)==1
new_symbol = qpsk_transmission(end) * (-1j); %01
end
if bit_transmit(bit_index1) == 0 && bit_transmit(bit_index2)==0
new_symbol = qpsk_transmission(end) ; %00
end
if bit_transmit(bit_index1) == 1 && bit_transmit(bit_index2)==0
new_symbol = qpsk_transmission(end) * (1j); %10
end
qpsk_transmission=[qpsk_transmission, new_symbol];
end
qpsk_received = qpsk_transmission*exp(1j*rand()*2*pi);
ref = qpsk_received(1);
bit_received=[];
for symbol_index=2:length(qpsk_received)
cur = qpsk_received(symbol_index);
angle_diff = angle(cur/ref);
if abs(angle_diff) < pi/4
bitI = 0;
bitQ = 0;
else if abs(angle_diff) < 3*pi/4
bitI =1;
bitQ = 0;
else if abs(angle_diff) < 5*pi/4
bitI = 1;
bitQ = 1;
else if abs(angle_diff)<7*pi /4
bitI = 0;
bitQ = 1;
end
end
end
end
bit=[bitI bitQ];
bit_received=[bit_received,bit];
%
ref = qpsk_received(symbol_index);
end
bit_transmit'
qpsk_transmission
qpsk_received
bit_received

Answers (0)

Community Treasure Hunt

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

Start Hunting!