⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demodulation_soft.m

📁 VBLAST的QR实现
💻 M
字号:
function output_frame = demodulation_soft(input_modu, index)
% demodulation for IEEE802.11a
% Input:    input_modu, complex values representing constellation points
%           index
% Output:   output_frame, output bit stream (data unit is one bit)

% In this version, increase the quatilization levels into 8.
% note: Matlab index starts from 1
QAM_input_I = real(input_modu);
QAM_input_Q = imag(input_modu);
output_frame = zeros(1,length(input_modu)*index);
switch index
case 1,
    BPSK_Demodu_I = zeros(1,17);
    BPSK_Demodu_I(3:17) = [1:15];
    
    row_temp = find(QAM_input_I <= -1);
    QAM_input_I(row_temp) = -1;
    row_temp = find(QAM_input_I >= 1);
    QAM_input_I(row_temp) = 1;
    BPSK_index = ceil(QAM_input_I*8) + 9;
	output_frame = BPSK_Demodu_I(BPSK_index); 
case 2,
    QPSK_Demodu_IQ = zeros(17,1);
    QPSK_Demodu_IQ(3:17) = [1:15]';
    
    row_temp = find(QAM_input_I<-1);
    QAM_input_I(row_temp) = -1;
    row_temp = find(QAM_input_I>1);
    QAM_input_I(row_temp) = 1;
    row_temp = find(QAM_input_Q<-1);
    QAM_input_Q(row_temp) = -1;
    row_temp = find(QAM_input_Q>1);
    QAM_input_Q(row_temp) = 1;
    QPSK_I_index = ceil(QAM_input_I*8) + 9;
    QPSK_Q_index = ceil(QAM_input_Q*8) + 9;
    output_frame = [QPSK_Demodu_IQ(QPSK_I_index),QPSK_Demodu_IQ(QPSK_Q_index)]'; 
case 4,
    QAM_16_Demodu_IQ = zeros(49,2);
    QAM_16_Demodu_IQ(19:32,1) = [1:14]';
    QAM_16_Demodu_IQ(33:49,1) = 15;
    QAM_16_Demodu_IQ(3:16,2) = [1:14]';
    QAM_16_Demodu_IQ(17:34,2) = 15;
    QAM_16_Demodu_IQ(35:48,2) = [14:-1:1]';
    
    row_temp = find(QAM_input_I<-3);
    QAM_input_I(row_temp) = -3;
    row_temp = find(QAM_input_I>3);
    QAM_input_I(row_temp) = 3;
    row_temp = find(QAM_input_Q<-3);
    QAM_input_Q(row_temp) = -3;
    row_temp = find(QAM_input_Q>3);
    QAM_input_Q(row_temp) = 3;
    QAM_I_index = ceil(QAM_input_I*8) + 25;
    QAM_Q_index = ceil(QAM_input_Q*8) + 25;
    output_frame = [QAM_16_Demodu_IQ(QAM_I_index,:),QAM_16_Demodu_IQ(QAM_Q_index,:)]'; 
case 6,
    %bit0
    QAM_64_Demodu_IQ = zeros(113,3);
    QAM_64_Demodu_IQ(51:64,1) = [1:14]';
    QAM_64_Demodu_IQ(65:113,1) = 15;
    %bit1
    QAM_64_Demodu_IQ(19:32,2) = [1:14]';
    QAM_64_Demodu_IQ(33:82,2) = 15;
    QAM_64_Demodu_IQ(83:96,2) = [14:-1:1]';
    %bit2
    QAM_64_Demodu_IQ(3:16,3) = [1:14]';
    QAM_64_Demodu_IQ(17:34,3) = 15;
    QAM_64_Demodu_IQ(35:48,3) = [14:-1:1]';
    QAM_64_Demodu_IQ(67:80,3) = [1:14]';
    QAM_64_Demodu_IQ(81:98,3) = 15;
    QAM_64_Demodu_IQ(99:112,3) = [14:-1:1]';
    
    row_temp = find(QAM_input_I<-7);
    QAM_input_I(row_temp) = -7;
    row_temp = find(QAM_input_I>7);
    QAM_input_I(row_temp) = 7;
    row_temp = find(QAM_input_Q<-7);
    QAM_input_Q(row_temp) = -7;
    row_temp = find(QAM_input_Q>7);
    QAM_input_Q(row_temp) = 7;
    QAM_I_index = ceil(QAM_input_I*8) + 57;
    QAM_Q_index = ceil(QAM_input_Q*8) + 57;
    output_frame = [QAM_64_Demodu_IQ(QAM_I_index,:),QAM_64_Demodu_IQ(QAM_Q_index,:)]';
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -