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

📄 zeroforcing_ic_mldetection_4x2.m

📁 关于瑞利信道的仿真程序 关于瑞利信道的仿真程序
💻 M
字号:
function [DemapSymbol_1,DemapSymbol_2,DemapSymbol_3,DemapSymbol_4] ...
         =ZeroForcing_IC_mlDetection_4x2(ChFR11,ChFR21,ChFR31,ChFR41,ChFR12,ChFR22,ChFR32,ChFR42,R1_S1,R1_S2,R2_S1,R2_S2,qam)
% Zero Forcing Interference Cancellation and Alamouti Detection
% ChFRmn: Channel Frequency Response from Tx m to Rx n
% Rp_Sq: Received freq signal at Rx p, time q

IQvalue=get80216map(qam);

DemapSymbol_1=zeros(1,1702);
DemapSymbol_2=zeros(1,1702);
DemapSymbol_3=zeros(1,1702);
DemapSymbol_4=zeros(1,1702);

for loop=1:1702
    H1=[ChFR11(loop),ChFR21(loop);ChFR21(loop)',-ChFR11(loop)'];
    H2=[ChFR12(loop),ChFR22(loop);ChFR22(loop)',-ChFR12(loop)'];
    G1=[ChFR31(loop),ChFR41(loop);ChFR41(loop)',-ChFR31(loop)'];
    G2=[ChFR32(loop),ChFR42(loop);ChFR42(loop)',-ChFR32(loop)'];
    r1=[R1_S1(loop);R1_S2(loop)'];  % column vector
    r2=[R2_S1(loop);R2_S2(loop)'];
    % ZF IC
    r1_zf=r1-G1*inv(G2)*r2;
    r2_zf=r2-H2*inv(H1)*r1;
    % Combiner
    H_zf=H1-G1*inv(G2)*H2;
    G_zf=G2-H2*inv(H1)*G1;
    ComSymbol_c=H_zf'*r1_zf;    % Combined S1 and S2
    ComSymbol_s=G_zf'*r2_zf;    % Combined S3 and S4
    % ML Detection for S1 and S2
    Factor=(sum(H_zf(1,:).*conj(H_zf(1,:)))-1)*(IQvalue.*conj(IQvalue));
        % ### S1 ###
    Metric=Factor+(abs(ComSymbol_c(1)-IQvalue)).^2;
    index=find(Metric==min(Metric));
    if length(index)>1
        index=index(1);
        disp('Uncertain');
    end
    DemapSymbol_1(loop)=index-1;
        % ### S2 ###
    Metric=Factor+(abs(ComSymbol_c(2)-IQvalue)).^2;
    index=find(Metric==min(Metric));
    if length(index)>1
        index=index(1);
        disp('Uncertain');
    end
    DemapSymbol_2(loop)=index-1;
    
    % ML Detection for S3 and S4
    Factor=(sum(G_zf(1,:).*conj(G_zf(1,:)))-1)*(IQvalue.*conj(IQvalue));
        % ### S3 ###
    Metric=Factor+(abs(ComSymbol_s(1)-IQvalue)).^2;
    index=find(Metric==min(Metric));
    if length(index)>1
        index=index(1);
        disp('Uncertain');
    end
    DemapSymbol_3(loop)=index-1;
        % ### S4 ###
    Metric=Factor+(abs(ComSymbol_s(2)-IQvalue)).^2;
    index=find(Metric==min(Metric));
    if length(index)>1
        index=index(1);
        disp('Uncertain');
    end
    DemapSymbol_4(loop)=index-1;
    
end % end for loop

⌨️ 快捷键说明

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