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

📄 enframe.m

📁 是一个根据最新LTE标准写的一个链路实现程序和信道估计程序
💻 M
字号:
function [data1,data2,test]=enframe(turbo_code)
%对turbo码进行天线的映射,调制,和导频的预留
x=turbo_code;
L=length(x);
N_count=13;%一帧中OFDM符号个数
para=180;%一个天线的并行子载波数
if L<(para*N_count-60*4)*4
    for i=L:(para*N_count-60*4)*4
        x(i)=0;
    end
end
%由turbo码得到的数据在进行天线映射时数据不够添0
L=(para*N_count-60*4)*4;
%数据的长度
x1=2*x-1;
%映射到+1,-1方便实现调制
for i=1:fix(L/2)
      one_signal(i)=x1(2*i-1);
      two_signal(i)=x1(2*i);
end
%实现turbo码奇偶码位到天线的映射
for i=1:2:fix(L/2)
    Qpsk_one_signal(fix(i/2)+1)=one_signal(i)/sqrt(2)+one_signal(i+1)/sqrt(2)*sqrt(-1);
    Qpsk_two_signal(fix(i/2)+1)=two_signal(i)/sqrt(2)+two_signal(i+1)/sqrt(2)*sqrt(-1);
end
%实现QPSK调制
% 数据信号映射到 rescource element 部分
count = 1; 
N_DL_RB = 15;
N_RB_sc = 12;
for i = 1:N_DL_RB
    for j = 1:7
        if j ==1 || j == 5
            for k = 1:N_RB_sc 
                if mod(k,3) == 0
                   data_frame1_p1((i-1)*N_RB_sc+k,j) = 0;
                   data_frame1_p2((i-1)*N_RB_sc+k,j) = 0;
                else
                    data_frame1_p1((i-1)*N_RB_sc+k,j) = Qpsk_one_signal(count);
                    data_frame1_p2((i-1)*N_RB_sc+k,j) = Qpsk_two_signal(count);
                    count = count +1;
                end
            end
        else 
            for k = 1:N_RB_sc
                data_frame1_p1((i-1)*N_RB_sc+k,j) = Qpsk_one_signal(count);
                data_frame1_p2((i-1)*N_RB_sc+k,j) = Qpsk_two_signal(count);
                count = count +1;
            end
        end
    end
end
% frame1  data 映射
for i = 1:N_DL_RB
    for j = 1:6
        if j ==1 || j == 4
            for k = 1:N_RB_sc 
                if mod(k,3) == 0
                   data_frame2_p1((i-1)*N_RB_sc+k,j) = 0;
                   data_frame2_p2((i-1)*N_RB_sc+k,j) = 0;
                else
                    data_frame2_p1((i-1)*N_RB_sc+k,j) = Qpsk_one_signal(count);
                    data_frame2_p2((i-1)*N_RB_sc+k,j) = Qpsk_two_signal(count);
                    count = count +1;
                end
            end
        else 
            for k = 1:N_RB_sc
                data_frame2_p1((i-1)*N_RB_sc+k,j) = Qpsk_one_signal(count);
                data_frame2_p2((i-1)*N_RB_sc+k,j) = Qpsk_two_signal(count);
                if count < 2100
                   count = count +1;
                end
            end
        end
    end
end
% frame2 data 映射
dao_Qpsk_one_signal = cat(2,data_frame1_p1,data_frame2_p1);
dao_Qpsk_two_signal = cat(2,data_frame1_p2,data_frame2_p2);
% ***************数据映射部分结束***************
%实现数据的映射
 data1=dao_Qpsk_one_signal;
 data2=dao_Qpsk_two_signal;
 % 测试信号
 test = Qpsk_one_signal;
 
        

⌨️ 快捷键说明

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