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

📄 mqam_bllr_sc_twotr.m

📁 MIMO系统
💻 M
字号:
%MQAM_BLLR-SC---Sfunction(简化公式)
function [sys,x0,str,ts]=MQAM_BLLR_SC_twoTR(t,x,u,flag,L,BitRate,sgma)
M=16;
d=1;


switch flag,
    case 0
        [sys,x0,str,ts]=mdlInitializeSizes(L,BitRate);%初始化模块
    case 3
        sys=mdlOutputs(t,x,u,L,BitRate,M,sgma,d);%计算输出
    case {1,2,4,9}
        sys=[];%无用的标志
    otherwise
        error(['Unhandled flag =',num2str(flag)]);%错误处理
end
%模块结束
%%%%%%%初始化状态、采样周期、Size结构%%%%%%%%%
function [sys,x0,str,ts]=mdlInitializeSizes(L,BitRate)
%调用simsizes创建sizes结构
sizes=simsizes;
%填写sizes结构
sizes.NumContStates=0;
sizes.NumDiscStates=0;
sizes.NumOutputs=4*BitRate;
sizes.NumInputs=3*L*BitRate;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=[];%没有连续状态
str=[];%没有状态次序
ts=[0 0];%继承性的采样周期

%%%%%模块输出%%%%%%%%%%
function sys=mdlOutputs(t,x,u,L,BitRate,M,sgma,d)
j=sqrt(-1);

%形成信道
delta=u(1:L*BitRate);%[(L*BitRate)*1]
No=(2*sgma^2*delta)';%[1*(L*BitRate)](No')

%还原输出矩阵信号
y=u(L*BitRate+1:2*L*BitRate)+j*u(2*L*BitRate+1:3*L*BitRate);%[(L*BitRate)*1]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S1_0=[-3*d+j*3*d;-d+j*3*d;-3*d+j*d;-d+j*d;-3*d-j*d;-d-j*d;-3*d-j*3*d;-d-j*3*d];%S1^(0)
S1_1=[d+j*3*d;3*d+j*3*d;d+j*d;3*d+j*d;d-j*d;3*d-j*d;d-j*3*d;3*d-j*3*d];%S1^(1)
S2_0=[-3*d+j*3*d;-3*d+j*d;-3*d-j*d;-3*d-j*3*d;3*d+j*3*d;3*d+j*d;3*d-j*d;3*d-j*3*d];%S2^(0)
S2_1=[-d+j*3*d;-d+j*d;-d-j*d;-d-j*3*d;d+j*3*d;d+j*d;d-j*d;d-j*3*d];%S2^(1)
S3_0=[-3*d+j*3*d;-3*d+j*d;-d+j*3*d;-d+j*d;d+j*3*d;d+j*d;3*d+j*3*d;3*d+j*d];%S3^(0)
S3_1=[-3*d-j*d;-3*d-j*3*d;-d-j*d;-d-j*3*d;d-j*d;d-j*3*d;3*d-j*d;3*d-j*3*d];%S3^(1)
S4_0=[-3*d+j*3*d;-d+j*3*d;d+j*3*d;3*d+j*3*d;-3*d-j*3*d;-d-j*3*d;d-j*3*d;3*d-j*3*d];%S4^(0)
S4_1=[-3*d+j*d;-3*d-j*d;-d+j*d;-d-j*d;d+j*d;d-j*d;3*d+j*d;3*d-j*d];%S4^(1)

for i=1:(M/2)
     metrics1_0(i,:)=((abs(y-delta*S1_0(i))).^2)';
     metrics2_0(i,:)=((abs(y-delta*S2_0(i))).^2)';
     metrics3_0(i,:)=((abs(y-delta*S3_0(i))).^2)';
     metrics4_0(i,:)=((abs(y-delta*S4_0(i))).^2)';
 %%%%%%%%//y-delta*beta//^2%%%%%%(1*(BitRate*L))
     metrics1_1(i,:)=((abs(y-delta*S1_1(i))).^2)';
     metrics2_1(i,:)=((abs(y-delta*S2_1(i))).^2)';
     metrics3_1(i,:)=((abs(y-delta*S3_1(i))).^2)';
     metrics4_1(i,:)=((abs(y-delta*S4_1(i))).^2)';
 %%%%%%%%//y-delta*alpha//^2%%%%%%(1*(BitRate*L))
end

LLR_r1_vector=(min(metrics1_0)-min(metrics1_1))./No;%LLR(r(1))(1*(BitRate*L))
LLR_r2_vector=(min(metrics2_0)-min(metrics2_1))./No;%LLR(r(2))(1*(BitRate*L))
LLR_r3_vector=(min(metrics3_0)-min(metrics3_1))./No;%LLR(r(3))(1*(BitRate*L))
LLR_r4_vector=(min(metrics4_0)-min(metrics4_1))./No;%LLR(r(4))(1*(BitRate*L))
% LLR_r1_vector=log(sum(exp(-metrics1_1/No)))-log(sum(exp(-metrics1_0/No)));%LLR(r(1))(1*(BitRate*L))
% LLR_r2_vector=log(sum(exp(-metrics2_1/No)))-log(sum(exp(-metrics2_0/No)));%LLR(r(2))(1*(BitRate*L))
% LLR_r3_vector=log(sum(exp(-metrics3_1/No)))-log(sum(exp(-metrics3_0/No)));%LLR(r(3))(1*(BitRate*L))
% LLR_r4_vector=log(sum(exp(-metrics4_1/No)))-log(sum(exp(-metrics4_0/No)));%LLR(r(4))(1*(BitRate*L))

LLR_r1_matr=(reshape(LLR_r1_vector,BitRate,L))';%(L*BitRate)
LLR_r2_matr=(reshape(LLR_r2_vector,BitRate,L))';%(L*BitRate)
LLR_r3_matr=(reshape(LLR_r3_vector,BitRate,L))';%(L*BitRate)
LLR_r4_matr=(reshape(LLR_r4_vector,BitRate,L))';%(L*BitRate)

%%%%%%取/LLR(r)/的最大分支%%%%%
[maxc1 num1]=max(abs(LLR_r1_matr));
[maxc2 num2]=max(abs(LLR_r2_matr));
[maxc3 num3]=max(abs(LLR_r3_matr));
[maxc4 num4]=max(abs(LLR_r4_matr));
LLR_r1=LLR_r1_matr(num1+L*(0:BitRate-1));%(1*BitRate)
LLR_r2=LLR_r2_matr(num2+L*(0:BitRate-1));%(1*BitRate)
LLR_r3=LLR_r3_matr(num3+L*(0:BitRate-1));%(1*BitRate)
LLR_r4=LLR_r4_matr(num4+L*(0:BitRate-1));%(1*BitRate)
%%%%%%%%%%判决(LLR_r>=0--1,LLR_r<0--0)%%%%%%%%%
sys_1=[LLR_r1;LLR_r2;LLR_r3;LLR_r4];%%(4*BitRate)

sys=-reshape(sys_1,4*BitRate,1);%((4*BitRate)*1)

⌨️ 快捷键说明

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