📄 mqam_llr_sc_twotr.m
字号:
%MQAM_LLR_SC---Sfunction
function [sys,x0,str,ts]=MQAM_LLR_SC_twoTR(t,x,u,flag,L,BitRate,sgma)
j=sqrt(-1);
M=16;
d=1;
% 对应的星座图
mapping=[-3*d+j*3*d;
-d+j*3*d;
d+j*3*d;
3*d+j*3*d;
-3*d+j*d;
-d+j*d;
d+j*d;
3*d+j*d;
-3*d-j*d;
-d-j*d;
d-j*d;
3*d-j*d;
-3*d-j*3*d;
-d-j*3*d;
d-j*3*d;
3*d-j*3*d];
switch flag,
case 0
[sys,x0,str,ts]=mdlInitializeSizes(L,BitRate);%初始化模块
case 3
sys=mdlOutputs(t,x,u,L,BitRate,M,mapping,sgma);%计算输出
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=2*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,mapping,sgma)
%形成信道
delta=u(1:L*BitRate);%[(L*BitRate)*1]
No=(2*sgma^2*delta)';%[1*(L*BitRate)](No')
%还原输出矩阵信号
r1=u(L*BitRate+1:2*L*BitRate)+j*u(2*L*BitRate+1:3*L*BitRate);%[(L*BitRate)*1]
%%LLR_SC准则
for i=1:M
metrics(i,:)=((abs(r1-delta*mapping(i))).^2)';%every symbol's distance (1*(L*BitRate))
end
repeat_No=repmat(No,M,1);%(M*(L*BitRate))
sum_exp_LLR=exp(min(metrics)./No).*sum(exp(-metrics./repeat_No));%(1*(L*BitRate))
sum_exp_LLR_matr1=(reshape(sum_exp_LLR,BitRate,L))';%(L*BitRate)L个支路的矩阵形式
r1_matr2=(reshape(r1,BitRate,L)).';%(L*BitRate)
delta_matr3=(reshape(delta,BitRate,L))';%(L*BitRate)
%%%选择LLR和最小的支路
[mimn1 num1]=min(sum_exp_LLR_matr1);
r1_select_vector=r1_matr2(num1+L*(0:BitRate-1));%(1*BitRate)
delta_select_vector=delta_matr3(num1+L*(0:BitRate-1));%(1*BitRate)
%%%判决
for i=1:M
metrics1(i,:)=(abs(r1_select_vector-delta_select_vector*mapping(i))).^2;%distance(1*BitRate)
end
[minn2 num2]=min(metrics1);%select the symbol of smallest distance
decei_symbol=mapping(num2);%(BitRate*1)
real_decei_symbol=real(decei_symbol);%实部
imag_decei_symbol=imag(decei_symbol);%虚部
sys=[real_decei_symbol;imag_decei_symbol];%((2*BitRate)*1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -