📄 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 + -