第一范文网 - 专业文章范例文档资料分享平台

移动通信实验报告(5)

来源:用户分享 时间:2021-06-02 本文由孤雪傲梅 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

h(SDchips), 1); % 速率=19.2 KBps [DataOut Metric] = SoftVitDec(G, SDchips, 1);%实现软判决输入的 Viterbi 译 码 %ReceiverHD.m function [DataOut, Metric] = ReceiverHD(HDchips, G, Scrambler); % 此函数用于实现基于 Viterbi 译码的硬判决接收机 %+++++++++++++++++++++++variables++++++++++++++++++++++++++++ %HDchips 硬判决 RAKE 接收机输入符号 % G Viterbi 编码生成多项式矩阵 % Scrambler 扰码序列 % DataOut 接收数据(二进制形式) % Metric Viterbi 译码最佳度量 %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (nargin == 1) %判断只有 HDchips 传入时在此生成 Viterbi 编码生成多项式矩 阵 G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1]; end % 速率=19.2 KBps HDchips = xor(HDchips, Scrambler);%解扰 INTERL = reshape(HDchips, 16, 24);%解交织 HDchips = reshape(INTERL', length(HDchips), 1);%速率=19.2 KBps [DataOut Metric] = VitDec(G, HDchips, 1);%维特比解码 %************************end of file***********************************

武汉理工大学,移动通信,信息学院,通信工程

% ************************beginning of file***************************** %VitDec.m function [xx, BestMetric] = VitDec(G, y, ZeroTail); % % 此函数是实现硬判决输入的 Viterbi 译码 %+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % G 生成多项式的矩阵 % y 输入的待译码序列 % ZeroTail 判断是否包含‘0’尾 % xx Viterbi 译码输出序列 % BestMetric 最后的最佳度量 %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ L = size(G, 1); % 输出码片数 K= size(G, 2); % 生成多项式长度 N = 2^(K-1); % 状态数 T = length(y)/L; % 最大栅格深度 OutMtrx = zeros(N, 2*L);%输出矩阵的定义 for s = 1:N in0 = ones(L, 1)*[0, (dec2bin((s-1), (K-1))-'0')]; in1 = ones(L, 1)*[1, (dec2bin((s-1), (K-1))-'0')]; out0 = mod(sum((G.*in0)'), 2); out1 = mod(sum((G.*in1)'), 2); OutMtrx(s, :) = [out0, out1];%生成输出矩阵 end PathMet = [0; 100*ones((N-1), 1)];%初始状态为 0 PathMetTemp = PathMet(:,1);%副本 Trellis = zeros(N, T);%栅格的矩阵 Trellis(:,1) = [0 : (N-1)]';%给第一列赋值 y = reshape(y, L, length(y)/L);%矩阵按输出码片数变形 for t = 1:T %主栅格计算循环 yy = y(:, t)';%取出 y 的第 t 列 for s = 0:N/2-1 [B0 ind0] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, 0+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), 0+[1:L]) - yy).^2)] ); [B1 ind1] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, L+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), L+[1:L]) - yy).^2)] ); PathMetTemp(1+[s, s+N/2]) = [B0; B1];%改变状态 Trellis(1+[s, s+N/2], t+1) = [2*s+(ind0-1); 2*s + (ind1-1)];%生成 栅格矩阵 end PathMet = PathMetTemp;%赋状态值 end xx = zeros(T, 1);%生成单列 0 矩阵,输出变量 if (ZeroTail) %确定最佳度量

武汉理工大学,移动通信,信息学院,通信工程

BestInd = 1; else [Mycop, BestInd] = min(PathMet);%非‘0’尾,取最小值所在位置 end BestMetric = PathMet(BestInd);%得到最后的最佳度量 xx(T) = floor((BestInd-1)/(N/2));%赋值 xx 最后一个

数 NextState = Trellis(BestInd, (T+1));%从栅格矩阵获得初态 for t=T:-1:2 xx(t-1) = floor(NextState/(N/2)); %倒序生成 xx NextState = Trellis( (NextState+1), t);%从栅格矩阵获得次态 end if (ZeroTail) xx = xx(1:end-K+1); %限定译码输出序列长度 end %PNGen.m function [y, Z] = PNGen(G, Zin, N); % % 此函数是根据生成多项式和输入状态产生长度为 N 的伪随机序列 %+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % G 生成多项式 % Zin 移位寄存器初始化 % N PN 序列长度 % y 生成的 PN 码序列 % Z 移位寄存器的输出状态 %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ L = length(G);%扰码生成多项式长度 Z = Zin; % 移位寄存器的初始化 y = zeros(N, 1);%N*1 的 0 矩阵 for i=1:N y(i) = Z(L); %获取当前状态输出值(移位寄存器的最后一位输出) Z = xor(G*Z(L), Z); %生成移位寄存器次态 Z = [Z(L); Z(1:L-1)]; %移位寄存器后移 1 位 end %yy = filter(1, flipud(G), [1; zeros(N-1, 1)]); %yy = mod(yy, 2); %PacketBuilder.m function [ChipsOut, Scrambler] = PacketBuilder(DataBits, G, Gs); %此函数用于产生 IS-95 前向链路系统的发送数据包 %+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % DataBits 发送数据(二进制形式) % G Viterbi 编码生成多项式 % Gs 长序列生成多项式(扰码生成多项式)

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新外语学习移动通信实验报告(5)全文阅读和word下载服务。

移动通信实验报告(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1207133.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top