function [soft_bits,evm] = rx_qam64_demod(rx_symbols)
soft_bits = zeros(6,length(rx_symbols)); % Each symbol consists of 6 bits
bit2=zeros(1,length(rx_symbols));
bit5=zeros(1,length(rx_symbols));
bit0 = real(rx_symbols);
for i=1:length(rx_symbols)
if(bit0(i)>0)
bit0(i)=1;
else
bit0(i)=0;
end
end
bit3 = imag(rx_symbols);
for i=1:length(rx_symbols)
if(bit3(i)>0)
bit3(i)=1;
else
bit3(i)=0;
end
end
bit1 = 4/sqrt(42)-abs(real(rx_symbols));
for i=1:length(rx_symbols)
if(bit1(i)>0)
bit1(i)=1;
else
bit1(i)=0;
end
end
bit4 = 4/sqrt(42)-abs(imag(rx_symbols));
for i=1:length(rx_symbols)
if(bit4(i)>0)
bit4(i)=1;
else
bit4(i)=0;
end
end
for m=1:length(rx_symbols)
if abs(4/sqrt(42)-abs(real(rx_symbols(m))))<=2/sqrt(42) % bit is one
bit2(m) = 1;
else
bit2(m) = 0; % bit is zero
end;
if abs(4/sqrt(42)-abs(imag(rx_symbols(m)))) <= 2/sqrt(42) % bit is one
bit5(m) = 1;
else
bit5(m) = 0;
end;
end;
soft_bits(1,:) = bit0;
soft_bits(2,:) = bit1;
soft_bits(3,:) = bit2;
soft_bits(4,:) = bit3;
soft_bits(5,:) = bit4;
soft_bits(6,:) = bit5;
evm_real=zeros(1,length(rx_symbols));
evm_image=zeros(1,length(rx_symbols));
for i=1:length(rx_symbols)
soft_bits_i=soft_bits(:,i);
if(soft_bits_i==[0;0;0;1;0;0])
evm_real(i)=real(rx_symbols(i))+7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[0;0;1;1;0;0])
evm_real(i)=real(rx_symbols(i))+5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[0;1;1;1;0;0])
evm_real(i)=real(rx_symbols(i))+3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[0;1;0;1;0;0])
evm_real(i)=real(rx_symbols(i))+1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[1;1;0;1;0;0])
evm_real(i)=real(rx_symbols(i))-1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[1;1;1;1;0;0])
evm_real(i)=real(rx_symbols(i))-3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[1;0;1;1;0;0])
evm_real(i)=real(rx_symbols(i))-5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[1;0;0;1;0;0])
evm_real(i)=real(rx_symbols(i))-7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-7/sqrt(42);
elseif(soft_bits_i==[0;0;0;1;0;1])
evm_real(i)=real(rx_symbols(i))+7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[0;0;1;1;0;1])
evm_real(i)=real(rx_symbols(i))+5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[0;1;1;1;0;1])
evm_real(i)=real(rx_symbols(i))+3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[0;1;0;1;0;1])
evm_real(i)=real(rx_symbols(i))+1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[1;1;0;1;0;1])
evm_real(i)=real(rx_symbols(i))-1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[1;1;1;1;0;1])
evm_real(i)=real(rx_symbols(i))-3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[1;0;1;1;0;1])
evm_real(i)=real(rx_symbols(i))-5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[1;0;0;1;0;1])
evm_real(i)=real(rx_symbols(i))-7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-5/sqrt(42);
elseif(soft_bits_i==[0;0;0;1;1;1])
evm_real(i)=real(rx_symbols(i))+7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[0;0;1;1;1;1])
evm_real(i)=real(rx_symbols(i))+5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[0;1;1;1;1;1])
evm_real(i)=real(rx_symbols(i))+3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[0;1;0;1;1;1])
evm_real(i)=real(rx_symbols(i))+1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[1;1;0;1;1;1])
evm_real(i)=real(rx_symbols(i))-1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[1;1;1;1;1;1])
evm_real(i)=real(rx_symbols(i))-3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[1;0;1;1;1;1])
evm_real(i)=real(rx_symbols(i))-5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[1;0;0;1;1;1])
evm_real(i)=real(rx_symbols(i))-7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-3/sqrt(42);
elseif(soft_bits_i==[0;0;0;1;1;0])
evm_real(i)=real(rx_symbols(i))+7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[0;0;1;1;1;0])
evm_real(i)=real(rx_symbols(i))+5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[0;1;1;1;1;0])
evm_real(i)=real(rx_symbols(i))+3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[0;1;0;1;1;0])
evm_real(i)=real(rx_symbols(i))+1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[1;1;0;1;1;0])
evm_real(i)=real(rx_symbols(i))-1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[1;1;1;1;1;0])
evm_real(i)=real(rx_symbols(i))-3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[1;0;1;1;1;0])
evm_real(i)=real(rx_symbols(i))-5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[1;0;0;1;1;0])
evm_real(i)=real(rx_symbols(i))-7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))-1/sqrt(42);
elseif(soft_bits_i==[0;0;0;0;1;0])
evm_real(i)=real(rx_symbols(i))+7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[0;0;1;0;1;0])
evm_real(i)=real(rx_symbols(i))+5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[0;1;1;0;1;0])
evm_real(i)=real(rx_symbols(i))+3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[0;1;0;0;1;0])
evm_real(i)=real(rx_symbols(i))+1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[1;1;0;0;1;0])
evm_real(i)=real(rx_symbols(i))-1/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[1;1;1;0;1;0])
evm_real(i)=real(rx_symbols(i))-3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[1;0;1;0;1;0])
evm_real(i)=real(rx_symbols(i))-5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[1;0;0;0;1;0])
evm_real(i)=real(rx_symbols(i))-7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+1/sqrt(42);
elseif(soft_bits_i==[0;0;0;0;1;1])
evm_real(i)=real(rx_symbols(i))+7/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+3/sqrt(42);
elseif(soft_bits_i==[0;0;1;0;1;1])
evm_real(i)=real(rx_symbols(i))+5/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+3/sqrt(42);
elseif(soft_bits_i==[0;1;1;0;1;1])
evm_real(i)=real(rx_symbols(i))+3/sqrt(42);
evm_image(i)=imag(rx_symbols(i))+3/sqrt(42);
elseif(soft_bits_i==[0;1;0;0;1;1])
evm_real(i)=real(rx_symbols(i))+1/sqrt(42);
evm_image(i)=imag(rx_sy
单载波频域均衡(SC-FDE) 的设计
需积分: 36 171 浏览量
2022-10-15
15:51:40
上传
评论 4
收藏 12KB ZIP 举报
寒听雪落
- 粉丝: 2390
- 资源: 43
最新资源
- 基于MFC的校园导航程序(使用最短路径dijkstra算法).rar
- Android Studio android APP 视频作为视图背景需要源代码或想了解其实现原理的可以私心我
- com.ZeroneGames.GreenProject.apk
- Python自动化开发入门教程
- 4399GameSem_116_13955_207551_6.apk
- python 3.9.19源码编译包
- php-8.2.18-Win32-vs16-x64.rar
- 字节跳动青训营-抖音项目
- SQL资料手册,语句教程,高级查询语句语法
- 上位机和串口建立 Modbus 协议进行数据传输,并使用 Mysql 数据库存储,能够实现实时温湿度显示和动态变化曲线,历史数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0