📄 demodulation.m
字号:
function demod_out = demodulation(demod_in,mod_mode)
%% 由信道信号的复数值找出对应的二进制序列。方法如下:由信道值,
%%求出该值与星座图中所有点的距离,找出距离最小的点,该点对应的
%%二进制序列及为该信道对应的解调结果。
%% Input:
%%-------------------------------------------------------------------------
%% demod_in :输入信道值 (the input channel value)
%%-------------------------------------------------------------------------
%% Output:
%%-------------------------------------------------------------------------
%% demod_out:解调结果 (demodulation output(binary) )
%%-------------------------------------------------------------------------
%% Global Variable:
%%-------------------------------------------------------------------------
%% g_RT
%%-------------------------------------------------------------------------
%%*************************************************************************
%system_parameters
switch (mod_mode)
%64_QAM
d=zeros(64,length(demod_in));
D=zeros(64,length(demod_in));
m=zeros(1,length(demod_in));
temp=[-7-7*j -7-5*j -7-j -7-3*j -7+7*j -7+5*j -7+j -7+3*j...
-5-7*j -5-5*j -5-j -5-3*j -5+7*j -5+5*j -5+j -5+3*j...
-1-7*j -1-5*j -1-j -1-3*j -1+7*j -1+5*j -1+j -1+3*j...
-3-7*j -3-5*j -3-j -3-3*j -3+7*j -3+5*j -3+j -3+3*j...
7-7*j 7-5*j 7-j 7-3*j 7+7*j 7+5*j 7+j 7+3*j...
5-7*j 5-5*j 5-j 5-3*j 5+7*j 5+5*j 5+j 5+3*j...
1-7*j 1-5*j 1-j 1-3*j 1+7*j 1+5*j 1+j 1+3*j...
3-7*j 3-5*j 3-j 3-3*j 3+7*j 3+5*j 3+j 3+3*j ]/sqrt(42);
for i=1:length(demod_in)
for n=1:64
d(n,i)=(abs(demod_in(i)-temp(n))).^2;
end
[min_distance,constellation_point] = min(d(:,i)) ; %D(:,i)=sort(d(:,i));%排序 (sort the distance in ascending order.)
m(i) = constellation_point;
end
A=de2bi([0:63],'left-msb');
for i=1:length(demod_in)
DEMOD_OUT(i,:)=A(m(i),:);
end
demod_out=reshape(DEMOD_OUT',1,length(demod_in)*6);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -