📄 mmse_ic_mldetection_4x2.m
字号:
function [DemapSymbol_1,DemapSymbol_2,DemapSymbol_3,DemapSymbol_4] ...
=mmse_IC_mlDetection_4x2(ChFR11,ChFR21,ChFR31,ChFR41,ChFR12,ChFR22,ChFR32,ChFR42,R1_S1,R1_S2,R2_S1,R2_S2,NoisePwr,qam)
% MMSE Interference Cancellation and ML detection
% ChFRmn: Channel Frequency Response from Tx m to Rx n
% Rp_Sq: Received freq signal at Rx p, time q
%NoisePwr=0.001;
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)'];
r=[r1;r2];
H=[H1,G1;H2,G2];
M_inv=inv(H*H'+NoisePwr*eye(4));
alpha=M_inv*H;
% ### S1 ###
EstSym=alpha(:,1)'*r;
Metric=(EstSym-IQvalue).*conj(EstSym-IQvalue);
index=find(Metric==min(Metric));
if length(index)>1
index=index(1);
disp('Uncertain');
end
DemapSymbol_1(loop)=index-1;
% ### S2 ###
EstSym=alpha(:,2)'*r;
Metric=(EstSym-IQvalue).*conj(EstSym-IQvalue);
index=find(Metric==min(Metric));
if length(index)>1
index=index(1);
disp('Uncertain');
end
DemapSymbol_2(loop)=index-1;
% ### S3 ###
EstSym=alpha(:,3)'*r;
Metric=(EstSym-IQvalue).*conj(EstSym-IQvalue);
index=find(Metric==min(Metric));
if length(index)>1
index=index(1);
disp('Uncertain');
end
DemapSymbol_3(loop)=index-1;
% ### S4 ###
EstSym=alpha(:,4)'*r;
Metric=(EstSym-IQvalue).*conj(EstSym-IQvalue);
index=find(Metric==min(Metric));
if length(index)>1
index=index(1);
disp('Uncertain');
end
DemapSymbol_4(loop)=index-1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -