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

📄 br_combiner2.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,4 or 5, indicates different systems (1=SISO,2=MRC,3=Alamouti,4=EGC,5=AS)
%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_combiner2(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,divn]=size(R_dfs);
if state==1||state==5
    for i=1:Nsymbol
        R_comb(:,i)=R_dfs(:,i)./H(:,i);
    end
elseif state==2
    for i=1:Nsymbol
        temp(:,:)=H(:,i,:);
        scale4=1./sum(abs(temp).^2,2);
        R_mrc(:,:)=R_dfs(:,i,:);
        R_mrc2=R_mrc.*conj(temp);
        R_comb(:,i)=sum(R_mrc2,2).*scale4;
    end
elseif state==3
    for i=1:2:N
        clear H1;H1(:,:)=H(i,:,:); H1=H1.';
        %H2(:,:)=H(:,i+1,:);        
        %scale5=sum(abs(H1).^2,2)
        scale4=1./sum(abs(H1).^2,1);
%         scale4(i+1,:)=1./sum(abs(H1).^2,1);
        R_alam(i,:)=(conj(H1(1,:)).*R_dfs(i,:)+H1(2,:).*conj(R_dfs(i+1,:))).*scale4;
        R_alam(i+1,:)=(conj(H1(2,:)).*R_dfs(i,:)-H1(1,:).*conj(R_dfs(i+1,:))).*scale4;
    end
%     for i=1:N
%         R_comb(i,:)=R_alam(i,:).*scale4(i,:);
%     end
elseif state == 6
    for k = 1:2:N    
        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
%     for i=1:2:Nsymbol
%         H1(:,:)=H(:,i,:);
%         %H2(:,:)=H(:,i+1,:);        
%         scale4=1./sum(abs(H1).^2,2);
%         R_alam(:,i)=conj(H1(:,1)).*R_dfs(:,i)+H1(:,2).*conj(R_dfs(:,i+1));
%         R_alam(:,i+1)=conj(H1(:,2)).*R_dfs(:,i)-H1(:,1).*conj(R_dfs(:,i+1));
%     end
%     for i=1:Nsymbol
%         R_comb(:,i)=R_alam(:,i).*scale4;
%     end
elseif state==4
    for i=1:Nsymbol
        temp(:,:)=H(:,i,:);
        R_egc(:,:)=R_dfs(:,i,:);
        R_egc2=R_egc./temp;
        R_comb(:,i)=sum(R_egc2,2)/divn;
    end
end    

⌨️ 快捷键说明

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