资源简介
本程序是对V-BLAST系统及其检测算法的仿真,可采用BPSK,QPSK,16QAM,64QAM调制。检测算法为ML,MMSE,ZF,以及采用迫零的连续干扰消除检测算法。
代码片段和文件信息
function output_frame = demodulation(input_modu index)
% demodulation for IEEE802.11a
% Input: input_modu complex values representing constellation points
% index
% Output: output_frame output bit stream (data unit is one bit)
% In this version increase the quatilization levels into 8.
% note: Matlab index starts from 1
QAM_input_I = real(input_modu);
QAM_input_Q = imag(input_modu);
output_frame = zeros(1length(input_modu)*index);
switch index
case 1
BPSK_Demodu_I = [0 1]; %f(m)=(m+1)/2 + 1 so I=-1 ---> 1 I=1 ---> 2
idx = find(QAM_input_I>1);
QAM_input_I(idx) = 1;
idx = find(QAM_input_I<-1);
QAM_input_I(idx) = -1;
output_frame = BPSK_Demodu_I(round((QAM_input_I+1)/2) + 1);
case 2
QPSK_Demodu_IQ = [0 1]; %f(m)=(m+1)/2 + 1 so I=-1 ---> 1 I=1 ---> 2
idx = find(QAM_input_I>1);
QAM_input_I(idx) = 1;
idx = find(QAM_input_I<-1);
QAM_input_I(idx) = -1;
idx = find(QAM_input_Q>1);
QAM_input_Q(idx) = 1;
idx = find(QAM_input_Q<-1);
QAM_input_Q(idx) = -1;
output_frame(1:2:end) = QPSK_Demodu_IQ(round((QAM_input_I+1)/2) + 1);
output_frame(2:2:end) = QPSK_Demodu_IQ(round((QAM_input_Q+1)/2) + 1);
case 4
QAM_16_Demodu_IQ = [0 1 3 2]; %f(m)=(m+3)/2 + 1 so I=-3 ---> 1 I=1 ---> 3
idx = find(QAM_input_I>3);
QAM_input_I(idx) = 3;
idx = find(QAM_input_I<-3);
QAM_input_I(idx) = -3;
idx = find(QAM_input_Q>3);
QAM_input_Q(idx) = 3;
idx = find(QAM_input_Q<-3);
QAM_input_Q(idx) = -3;
tmp = round((QAM_input_I+3)/2) + 1;
output_frame(1:4:end) = bitget(QAM_16_Demodu_IQ(tmp)2);
output_frame(2:4:end) = bitget(QAM_16_Demodu_IQ(tmp)1);
tmp = round((QAM_input_Q+3)/2) + 1;
output_frame(3:4:end) = bitget(QAM_16_Demodu_IQ(tmp)2);
output_frame(4:4:end) = bitget(QAM_16_Demodu_IQ(tmp)1);
case 6
QAM_64_Demodu_IQ = [0 1 3 2 6 7 5 4]; %f(m)=(m+7)/2 + 1 so I=-7 ---> 1 I=1 ---> 5
idx = find(QAM_input_I>7);
QAM_input_I(idx) = 7;
idx = find(QAM_input_I<-7);
QAM_input_I(idx) = -7;
idx = find(QAM_input_Q>7);
QAM_input_Q(idx) = 7;
idx = find(QAM_input_Q<-7);
QAM_input_Q(idx) = -7;
tmp = round((QAM_input_I+7)/2) + 1;
output_frame(1:6:end) = bitget(QAM_64_Demodu_IQ(tmp)3);
output_frame(2:6:end) = bitget(QAM_64_Demodu_IQ(tmp)2);
output_frame(3:6:end) = bitget(QAM_64_Demodu_IQ(tmp)1);
tmp = round((QAM_input_Q+7)/2) + 1;
output_frame(4:6:end) = bitget(QAM_64_Demodu_IQ(tmp)3);
output_frame(5:6:end) = bitget(QAM_64_Demodu_IQ(tmp)2);
output_frame(6:6:end) = bitget(QAM_64_Demodu_IQ(tmp)1);
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2693 2004-10-03 22:04 V-BLAST程序\demodulation.m
文件 1237 2004-10-03 22:04 V-BLAST程序\modulation.m
文件 134 2007-04-20 21:53 V-BLAST程序\read me.txt
文件 3714 2007-04-20 21:44 V-BLAST程序\vblast.m
文件 1524 2007-04-20 20:58 V-BLAST程序\vblast1.m
文件 3015 2007-04-20 21:15 V-BLAST程序\vblast3.m
文件 1590 2007-04-20 21:39 V-BLAST程序\vblast4.m
目录 0 2007-04-20 21:53 V-BLAST程序
----------- --------- ---------- ----- ----
13907 8
相关资源
- 计算信号盒维数的MATLAB代码
- 带高斯白噪声的Kalman滤波Matlab代码带
- 一种基于turbo码的matlab仿真
- matlab中滑动窗口实现
- MATLAB实验报告
- Hill密码matlab实现源码
- 傅里叶梅林FourierMellin实现图像配准
- matlab knn算法 iris
- 非线性方程组求解matlab程序
- 用matlab演示行波的程序
- AdaBoost在matlab下的简单实现
- 基于MATLAB的行人检测代码
- 阵列信号处理的理论和应用 MATLAB 程序
- 分步傅里叶法Matlab代码共享代码
- matlab基于knn算法的adaboost实现
- apriori 频繁项集与关联规则 算法的m
- 基于Matlab的H_inf鲁棒控制器的设计
- matlab人眼识别代码
- ATM matlab 程序
- LU分解法的matlab实现
- 遗传算法VRP的matlab程序
-
HEV matlab/simuli
nk仿真模型 - kappa系数的MATLAB程序
- 扩展有限元源码
- Matlab基于窗函数的滤波器设计
- 阻尼牛顿法求函数极小值
- 基于遗传算法的排课问题的matlab实现
- 麻省理工matlab公开课课后答案
- MATLAB基于DCT图像压缩
- 人工免疫matlab工具箱
评论
共有 条评论