?? cdma業(yè)務(wù)信道卷積解碼實(shí)現(xiàn).txt
字號:
<matlab> CDMA業(yè)務(wù)信道卷積解碼實(shí)現(xiàn)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 該函數(shù)根據(jù)上下行信道區(qū)分生成不同碼率的卷積碼序列 %
% original_sequence是原始輸入序列,channel_select %
% 是信道選擇參數(shù),其中下行碼率為1/2,上行信道為1/3 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [decode_sequence] = convolutional_decode(...
convolutional_sequence,tail_bits_length,channel_select)
seq_len = length(convolutional_sequence); % 得到輸入數(shù)據(jù)序列的長度
if length(seq_len) < 1 % 輸入數(shù)據(jù)序列必須不為空
error('輸入序列錯誤!');
end
if nargin < 3
channel_select = 1; % 選擇正向業(yè)務(wù)信道
end
if nargin < 2
error('輸入?yún)?shù)不足!');
end
if tail_bits_length < 1 | rem(tail_bits_length,1) ~= 0
error('參數(shù)tail_length必須是大于0的正整數(shù)!');
end
register_order = 8; % 初始化移位寄存器的階數(shù)
if channel_select == 1
restricted_length = 9; % 卷積碼的約束長度為9
% code_rate = [1 2]; % 正向業(yè)務(wù)信道的編碼效率為1/2
% xor_generator_0 = [1 0 1 1 1 0 0 0 1]; % 初始化編碼效率為1/2的連接向量器0
% xor_generator_1 = [1 1 1 1 0 1 0 1 1];
xor_cal_generator = [561,753]; % 初始化連接器
trellis = poly2trellis(restricted_length,...
xor_cal_generator);
decode_sequence = vitdec(convolutional_sequence,trellis,tail_bits_length,'cont','hard');
decode_sequence(1:tail_bits_length) = [];
elseif channel_select == 2
restricted_length = 9; % 卷積碼的約束長度為9
% code_rate = [1 3]; % 默認(rèn)正向業(yè)務(wù)信道的編碼效率為1/2
% xor_generator_0 = [1 0 1 1 0 1 1 1 1]; % 初始化編碼效率為1/3的連接向量器0
% xor_generator_1 = [1 1 0 1 1 0 0 1 1];
% xor_generator_2 = [1 1 1 0 0 1 0 0 1];
xor_cal_generator = [557,663,711]; % 初始化連接器
trellis = poly2trellis(restricted_length,...
xor_cal_generator);
decode_sequence = vitdec(convolutional_sequence,trellis,tail_bits_length,'cont','hard');
decode_sequence(1:tail_bits_length) = [];
else
error('信道選擇參數(shù)channel_select錯誤! 1 - 正向業(yè)務(wù)信道,2 - 反向業(yè)務(wù)信道');
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -