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

📄 br_combiner.m

📁 基于OFDM的无线宽带系统仿真It contains mainly two parts, i.e. link-level simulator and system-level simulator.
💻 M
字号:
%R_comb=BR_combiner(R_dfs,H,state)
%Combine received signal
%Equilization and scaling is also performed when necessary
%R_dfs is the output signal of FFT, without CP
%H is the channel frequency response
%state can be 1,2,3 or 4, indicates different systems (1=SISO,2=MRC,3=MISO,4=EGC)
%R_comb will be demodulated later to recover the transmitted bits
%
%by Yuanye Wang
%CTIF, Aalborg University
%yywang@kom.aau.dk
%29-06-2006
function R_comb=BR_combiner(R_dfs,H,state)
% if flg_csi_err == 1
%     H = H.*10.^((randn(size(H)) + i*randn(size(H)))/sqrt(2)/10); 
%     %g=10.^((10*log10(g_noCSI_Err)+randn(size(g_noCSI_Err)))/10);%/chEstErrorFactor;
% end
[N,Nsymbol,R_div]=size(R_dfs);
if state==1||state==5
    for k=1:Nsymbol
        R_comb(:,k)=R_dfs(:,k)./H(:,k);
    end
elseif state==2 || state == 7
    for k=1:Nsymbol
        temp(:,:)=H(:,k,:);
        scale4=1./sum(abs(temp).^2,2);
        R_mrc(:,:)=R_dfs(:,k,:);
        R_mrc2=R_mrc.*conj(temp);
        R_comb(:,k)=sum(R_mrc2,2).*scale4;
    end
elseif state==3
    for k=1:2:Nsymbol
        H1(:,:)=H(:,k,:);
        %H2(:,:)=H(:,i+1,:);        
        scale4=1./sum(abs(H1).^2,2);
        R_comb(:,k)=(conj(H1(:,1)).*R_dfs(:,k)+H1(:,2).*conj(R_dfs(:,k+1))).*scale4;
        R_comb(:,k+1)=(conj(H1(:,2)).*R_dfs(:,k)-H1(:,1).*conj(R_dfs(:,k+1))).*scale4;
    end
elseif state==4
    for k=1:Nsymbol
        temp(:,:)=H(:,k,:);
        R_egc(:,:)=R_dfs(:,k,:);
        R_egc2=R_egc./temp;
        %R_egc2(:,:)=R_egc(:,:).*conj(H)./(abs(H).^2+1/snr);
        R_comb(:,k)=sum(R_egc2,2)/divn;
    end
elseif state == 6
    for k = 1:2:Nsymbol    
        scale4=1./sum(abs(squeeze(H(:,k,:))).^2,2);
        r0 = R_dfs(:,k,1); r1 = R_dfs(:,k+1,1);
        r2 = R_dfs(:,k,2); r3 = R_dfs(:,k+1,2);
        h0 = H(:,k,1); h1 = H(:,k,2);
        h2 = H(:,k,3); h3 = H(:,k,4);
        R_comb(:,k) = (conj(h0).*r0 + h1.*conj(r1) + conj(h2).*r2 + h3.*conj(r3)).*scale4;
        R_comb(:,k+1) = (conj(h1).*r0 - h0.*conj(r1) + conj(h3).*r2 - h2.*conj(r3)).*scale4;        
    end
end

⌨️ 快捷键说明

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