BPSK→64QAM
function [ TX_64QAM ] = bit_2_64QAM( TX_bit )
temp_size = size(TX_bit);
TX_bit1 = TX_bit(:,1:3:end);
TX_temp = TX_bit(:,2:3:end) + 1j*TX_bit(:,3:3:end);
TX_temp2 = zeros(temp_size(1),length(TX_bit)/3);
TX_temp2(and(TX_bit1 < 0 , TX_temp == 1-1j)) = -1;
TX_temp2(and(TX_bit1 < 0 , TX_temp == 1+1j)) = -3;
TX_temp2(and(TX_bit1 < 0 , TX_temp == -1+1j)) = -5;
TX_temp2(and(TX_bit1 < 0 , TX_temp == -1-1j)) = -7;
TX_temp2(and(TX_bit1 > 0 , TX_temp == 1-1j)) = 1;
TX_temp2(and(TX_bit1 > 0 , TX_temp == 1+1j)) = 3;
TX_temp2(and(TX_bit1 > 0 , TX_temp == -1+1j)) = 5;
TX_temp2(and(TX_bit1 > 0 , TX_temp == -1-1j)) = 7;
TX_64QAM = (TX_temp2(:,1:2:end) + 1j *TX_temp2(:,2:2:end))/sqrt(42);
end
64QAM受信信号→64QAM硬判定
function [ RX_symbol ] = QAM64_2_symbol( RX_64QAM )
%QAM64_2_SYMBOL この関数の概要をここに記述
% 詳細説明をここに記述
RX_64QAM_I = real(RX_64QAM)*sqrt(42);
RX_64QAM_Q = imag(RX_64QAM)*sqrt(42);
RX_64QAM_I(RX_64QAM_I > 6) = 7;
RX_64QAM_I(and(RX_64QAM_I < 6 , RX_64QAM_I > 4)) = 5;
RX_64QAM_I(and(RX_64QAM_I < 4 , RX_64QAM_I > 2)) = 3;
RX_64QAM_I(and(RX_64QAM_I < 2 , RX_64QAM_I > 0)) = 1;
RX_64QAM_I(and(RX_64QAM_I < 0 , RX_64QAM_I > -2)) = -1;
RX_64QAM_I(and(RX_64QAM_I < -2 , RX_64QAM_I > -4)) = -3;
RX_64QAM_I(and(RX_64QAM_I < -4 , RX_64QAM_I > -6)) = -5;
RX_64QAM_I(RX_64QAM_I < -6) = -7;
RX_64QAM_Q(RX_64QAM_Q > 6) = 7;
RX_64QAM_Q(and(RX_64QAM_Q < 6 , RX_64QAM_Q > 4)) = 5;
RX_64QAM_Q(and(RX_64QAM_Q < 4 , RX_64QAM_Q > 2)) = 3;
RX_64QAM_Q(and(RX_64QAM_Q < 2 , RX_64QAM_Q > 0)) = 1;
RX_64QAM_Q(and(RX_64QAM_Q < 0 , RX_64QAM_Q > -2)) = -1;
RX_64QAM_Q(and(RX_64QAM_Q < -2 , RX_64QAM_Q > -4)) = -3;
RX_64QAM_Q(and(RX_64QAM_Q < -4 , RX_64QAM_Q > -6)) = -5;
RX_64QAM_Q(RX_64QAM_Q < -6) = -7;
RX_symbol = (RX_64QAM_I + 1j * RX_64QAM_Q)/sqrt(42);
end
64QAM硬判定→BPSK
function [ RX_bit ] = symbol_2_bit_64QAM( RX_symbol )
%SYMBOL_2_BIT_64QAM この関数の概要をここに記述
% 詳細説明をここに記述
temp_size = size(RX_symbol);
RX_temp = zeros(temp_size(1),temp_size(2)*2);
RX_temp(:,1:2:end) = real(RX_symbol) * sqrt(42);
RX_temp(:,2:2:end) = imag(RX_symbol) * sqrt(42);
RX_bit1 = zeros(temp_size(1),length(RX_symbol)*2);
RX_bit2 = zeros(temp_size(1),length(RX_symbol)*2);
RX_bit3 = zeros(temp_size(1),length(RX_symbol)*2);
RX_bit1(RX_temp > 0) = 1;
RX_bit1(RX_temp < 0) = -1;
RX_bit2(abs(RX_temp) < 4) = 1;
RX_bit2(abs(RX_temp) > 4) = -1;
RX_bit3(abs(RX_temp) < 2) = -1;
RX_bit3(and(abs(RX_temp) < 6 , abs(RX_temp) > 2)) = 1;
RX_bit3(abs(RX_temp) > 6) = -1;
RX_bit = zeros(temp_size(1),length(RX_symbol)*6);
RX_bit(:,1:3:end) = RX_bit1;
RX_bit(:,2:3:end) = RX_bit2;
RX_bit(:,3:3:end) = RX_bit3;
end