📄 convolutional_en.m
字号:
function [output]=convolutional_en(input)
% 卷积编码
% convolutional_coded实现卷积编码。给出任意一个输入序列input、卷积码生成矩阵
% G、和输入端口数k0。可以正确获得经过编码后的输出序列output。
%
% k0:在一个时钟周期内输入移位寄存器的bit数k0=1;
% G :卷积编码器的生成矩阵G=[1 0 1 1 1 0 0 0 1;1 1 1 1 0 1 0 1 1];
% input:需编码的比特序列。
%
%
% [output]=convolutional_coded(input) 返回经卷积编码器编码后的输出比特序列。
%
%
% 作者: 王丽
% $版本: 1.00 $ $日期: 2,24,2005$
%卷积编码器的生成矩阵G;
G = [1 0 1 1 1 0 0 0 1;1 1 1 1 0 1 0 1 1];
%在一个时钟周期内输入移位寄存器的bit数;
k0 = 1;
%完善输入信号,使其是输入端口数的整数倍;
if mod(size(input,2),k0) > 0
input = [input,zeros(1,k0-mod(length(input),k0))];
end
%从生成矩阵G中获得约束长度L,和输出端口数n0的信息;
n0 = size(G,1);
L = size(G,2)/k0;
%将输入序列进行补零处理;
in = [zeros(1,(L-1)*k0),input,zeros(1,(L-1)*k0)];
%将输入序列进行重新整形,利用乘法计算来实现卷积计算,并计算编码输出矩阵;
reshape_seq = [];
for i = 0:length(input)/k0+L-2
reshape_seq = [reshape_seq,in((L+i)*k0:-1:(i*k0+1))];
end
reshape_inner = reshape(reshape_seq,L*k0,length(input)/k0+L-1);
encoded = mod(G*reshape_inner,2);
%对输出序列进行整形;
output = reshape(encoded,1,n0*(length(input)/k0+L-1));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -