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

📄 estimator_ls_txdiv.m

📁 程序里面包含各部分算法仿真 可供参考和使用
💻 M
字号:
function H = estimator_ls_txdiv(K,K0,N_Tx_ant,N_Rx_ant,pilot_rx,pilot_tx,frame,ts,pilot_n,var_noise,option,N_pilot_sym_ts)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    


S = zeros(K*N_Tx_ant,K);
WJ = zeros(K*N_Tx_ant,K0*N_Tx_ant);
h_p = zeros(K,1,N_Rx_ant*N_Tx_ant);
H_p = zeros(K,1,N_Rx_ant*N_Tx_ant);

global h_t;

for nr = 1:N_Rx_ant
    
    if (frame == 1)&(ts == 1)&(pilot_n == 1) % 为加快系统仿真速度,矩阵A,Q,inv(Q)都只在第1帧计算
        % 发送的频域导频样点
        for nt = 1:N_Tx_ant
            S((nt-1)*K + 1:nt*K,:) = diag(pilot_tx(:,1,nt));  
        end
        % 映射矩阵
        J = [eye(K0,K0); zeros(K - K0,K0)];
        % fft(J)和 W*J等效,W为FFT矩阵
        % 进行fftshift的原因是,加信道时进行了fftshift,以保证频域信道响应的零频率点,对应OFDM的零号(中心)子载波
        WJ0 = fftshift(fft(J),1);
        for nt = 1:N_Tx_ant
            WJ((nt-1)*K + 1:nt*K,(nt-1)*K0 + 1:nt*K0) = WJ0;
        end
        A = S.'*WJ;
        Q = A'*A;
        inv_Q = inv(Q);
        save ce_txdiv.mat A inv_Q Q;
    else 
        load ce_txdiv.mat;
    end
    % 接收到的频域导频样点
    x = pilot_rx(:,1,nr);     
    % 多天线LS估计算法
    p = A'*x;
    h = inv_Q*p;
    
    
    % 把估计出的值放在对应的时域信道相应位置
    for nt = 1:N_Tx_ant
        h_p( 1:K0,1,(nr-1)*N_Tx_ant + nt) = h((nt-1)*K0+1:nt*K0);
    end
    
    h_t(:,(ts-1)*N_pilot_sym_ts + pilot_n,:) = h_p;
    
end

% 对得到的信道响应进行加权修正
if option == 1
    sigma2_l = sum( abs(h_p).^2 ,3 )/(N_Tx_ant*N_Rx_ant);
    sigma2 = var_noise;
    alfa_l = (sigma2_l./(sigma2_l + sigma2)) ./ ( sum( sigma2_l.^2./(sigma2_l + sigma2) ) ); 
    h_p = repmat(alfa_l,[1,1,N_Tx_ant*N_Rx_ant]).*h_p;
end

% 得到频域信道响应值
H = fftshift(fft(h_p),1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


⌨️ 快捷键说明

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