📄 deqam8.m
字号:
%该程序用来完成对输入信号进行8PSK解调,属于《链路级仿真软件设计》程序二的8PSK解调模块
function [llr]=deqam8(x,h,SNR_db)
%[llr]=de8psk(x)
%x是复向量,其中向量元素表示输入到解调器中的信号
%h为信道估值向量,是复向量,其中向量元素表示对应采样时刻的信道状态。
%SNR_db为信道噪比。
%llr为x通过解调器后的输出信号,是实向量,表示经过相关解调后的数据“似然比“信息。
%SNR_db为信道信噪比,信号功率为1,噪声功率为n_power
% |
% 4
% 3 | 2
% ----7--------1---
% 8 | 5
% 6
% |
%
%wdy
%编程日期:2006-7-7
%8psk符号对应的二进制比特数
const_qam8=3;
%以二进制比特数来表示所有8psk符号
%计算8psk相应符号位0或1到相应符号位为1或0的符号的距离,所采用的表(三个比特位)
const_num=[1 2 3 4];
%计算1/2/3位比特时,相对于被解调星座位置的偏差(十进制表示)
const_num_1=[4 4 4 4;2 2 4 4;1 2 3 4];
%const_num_0=[0 0 0 0;0 0 2 2;0 1 2 3];
%星座图表
constel_diagram=[sqrt(2),1+j,-1+j,sqrt(2)*j,1-j,-j*sqrt(2),-sqrt(2),-1-j]/sqrt(2);%[1 2 3 4 5 6 7 8]
%mapping=[1,sqrt(2)/2+sqrt(2)/2*j,-sqrt(2)/2+sqrt(2)/2*j,j,sqrt(2)/2-sqrt(2)/2*j,-j,-1,-sqrt(2)/2-sqrt(2)/2*j];
%SNR_db为信道信噪比,信号功率为1
SNR_linr=exp(SNR_db*log(10)/10);
%SNR_linr=exp(SNR*log(10)/10);
%噪声方差
%len为输入信号的长度
len=length(x);
h_square=abs(h).^2;
llr=zeros(1,const_qam8*len);
temp=[];
for k=1:2^const_qam8
temp=[temp,abs(x-constel_diagram(k)).^2];
end
for m=1:len
temp2=temp(m:len:2^const_qam8*len);
for n=1:const_qam8
%计算第n位比特为1的星座图到被解调星座的最小距离
pad_num_1=const_num+const_num_1(n,:);
dist_square_1=min(temp2(pad_num_1));
%计算第n位比特为0的星座图到被解调星座的最小距离
pad_num_0=const_num+const_num_1(n,:)-2^(const_qam8-n);
dist_square_0=min(temp2(pad_num_0));
%得到释然比信息
llr(const_qam8*(m-1)+n)=h_square(m)*(dist_square_1-dist_square_0);
end
end
llr=llr*SNR_linr;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -