- 经验
- 1935
- 分贝
- 0
- 家园分
- 2370
- 在线时间:
- 227 小时
- 最后登录:
- 2019-4-23
- 帖子:
- 73
- 精华:
- 0
- 注册时间:
- 2016-9-25
- UID:
- 1279614
注册:2016-9-251
|
本帖最后由 张力_威尼斯人官方网站 于 2017-9-6 21:13 编辑
(20)被误解的最大似然——算法与准则的区别和联系(一)
- function BitData = demodqam16exhaust(Conste, Normalized)
- % 函数描述:16-QAM解调,对接收到的星座图进行硬判决,采用最笨的穷举法
- %
- % called by:各种需要进行星座解调硬判决的m文件
- % 输入参数:
- % Conste:星座点,可以为标量,行向量或者列向量,但不支持矩阵。
- % Normalized: 指定功率是否归一化,字符串形式,
- % 只能为Normalized或者NonNormalized,否则报错。
- % 输出参数
- % BitData:解调后的0、1序列。如果输入为标量,则输出为列向量;
- % 如果输入为列向量,输出也为列向量,每4个比特对应输入的星座点;
- % 如果输入为行向量,输出为行数为4的矩阵,每一列对应输入的星座点。
- %
- % Last Version : 2.0
- % This Version : 3.0
- % This File generated by : 张力
- % This File updated by : 张力
- %
- % Revision History :
- % 时间 具体工作
- % 20150813 v2.0用的循环,这个版本改为向量化编程了,速度大有提升
- %
- % Email: larlyii@outlook.com
- if strcmp(Normalized, 'Normalized')
- Data = Conste * sqrt(10); % 由于调制时归一化了,解调时要去归一化
- elseif strcmp(Normalized, 'NonNormalized')
- % do nothing
- else
- error('第二个参数必须为Normalized或者NonNormalized');
- end
- if ~iscolumn(Conste)
- Data = reshape(Conste, [], 1);
- end
- Data_I = real(Data);
- Data_Q = imag(Data);
- Dis_I = (repmat(Data_I, 1, 4) - repmat([-3, -1, 3, 1], length(Data), 1)) .^ 2;
- Dis_Q = (repmat(Data_Q, 1, 4) - repmat([3, 1, -3, -1], length(Data), 1)) .^ 2;
- Dis = [repmat(Dis_I(:,1), 1, 4) + Dis_Q, repmat(Dis_I(:,2), 1, 4) + Dis_Q, ...
- repmat(Dis_I(:,3), 1, 4) + Dis_Q, repmat(Dis_I(:,4), 1, 4) + Dis_Q];
- [~, MinIdx] = min(Dis.');
- BinData = de2bi(MinIdx - 1, 'left-msb').';
- if iscolumn(Conste)
- BitData = reshape(BinData, [], 1);
- end
复制代码
|
-
总评分: 经验 + 50
家园分 + 50
查看全部评分
|