function [t, HDB3] = code2(Ts, N_sample, N, incode)
dt = Ts / N_sample;
t = 0 : dt : (N * N_sample - 1) * dt;
g = ones(1, N_sample);
% % AMI
% AMI = [];
% RAN0 = incode;
% single0 = 1;
% for i = 1 : N
% if (RAN0(i) == 1)
% RAN0(i) = RAN0(i) * single0;
% single0 = single0 * -1;
% end
% end
%
% AMI = [];
% for i= 1 : N
% AMI = [AMI RAN0(i) * g];
% end
% HDB3
% 先转换为AMI码
RAN1 = RAN0;
single1 = 1;
for i = 1 : N
if (RAN1(i) == 1)
RAN1(i) = RAN1(i) * single1;
single1 = single1 * -1;
end
end
% 加入破环码
RAN2 = RAN1;
count = 1;
V = 0;
for i = 1 : N - 3
if((RAN2(i)||RAN2(i+1)||RAN2(i+2)||RAN2(i+3)) == 0) % 判断是否为4个0
if(i == 1)
RAN2(i + 3) = 1;
V = [V RAN2(i + 3)];
count = count + 1;
else
RAN2(i + 3) = RAN2(i - 1);% V 与前一非零符号极性相同
V = [V RAN2(i + 3)];
count = count + 1;
if(V(count) == V(count - 1))% 若相邻破坏码极性相同
RAN2(i) = -RAN2(i - 1);% B 与前一非零符号极性相反
V(count) = -V(count);
for j = i + 1 : N
RAN2(j) = -RAN2(j);% B后的非零符号极性反转
end
end
end
end
end
HDB3 = [];
for i = 1 : N
HDB3 = [HDB3 RAN2(i) * g];
end