?? cdma業務信道卷積編碼實現.txt
字號:
<matlab> CDMA業務信道卷積編碼實現
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 該函數根據上下行信道區分生成不同碼率的卷積碼序列 %
% original_sequence是原始輸入序列,channel_select %
% 是信道選擇參數,其中下行碼率為1/2,上行信道為1/3 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [convolutional_sequence] = convolutional_code(original_sequence,channel_select)
seq_len = length(original_sequence); % 得到輸入數據序列的長度
if length(seq_len) < 1 % 輸入數據序列必須不為空
error('輸入序列錯誤!');
end
if nargin < 2
channel_select = 1; % 選擇正向業務信道
end
register_order = 8; % 初始化移位寄存器的階數
if channel_select == 1
restricted_length = 9; % 卷積碼的約束長度為9
% code_rate = [1 2]; % 正向業務信道的編碼效率為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);
convolutional_sequence = convenc(original_sequence,trellis);
elseif channel_select == 2
restricted_length = 9; % 卷積碼的約束長度為9
% code_rate = [1 3]; % 默認正向業務信道的編碼效率為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);
convolutional_sequence = convenc(original_sequence,trellis);
else
error('信道選擇參數channel_select錯誤! 1 - 正向業務信道,2 - 反向業務信道');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 該函數完成卷積編碼之前的加編碼器尾比特功能, %
% original_sequence為原始輸入序列,add_length %
% 是加入尾比特的長度 %
%%%%%%%%%%%%%%%%%%%%%%%%%%
function [add_tail_bits_sequence] = add_tail_bits(original_sequence,add_length)
if nargin < 2
error('輸入參數不足!');
end
if add_length < 1 | rem(add_length,1) ~= 0
error('參數add_length輸入錯誤!add_length必須是正整數!');
end
add_tail_bits_sequence = [original_sequence,zeros(1,add_length)];
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -