Matlab仿真进行AMI,HDB3编译码并绘制图像的代码
时间: 2024-03-28 19:40:46 浏览: 78
以下是一个完整的Matlab代码示例,用于AMI和HDB3编译码的仿真,并绘制出编码前后的波形图像。
% AMI编码
% 输入信号
input = [0 1 0 0 1 0 -1 0 1 0];
% AMI编码
output = zeros(1,length(input));
last = 0;
for i=1:length(input)
if input(i) == 0
output(i) = 0;
else
output(i) = last + input(i);
last = output(i);
end
end
% 绘制波形图像
subplot(2,1,1);
plot(input,'LineWidth',2);
title('AMI编码前');
axis([1 length(input) -1.5 1.5]);
subplot(2,1,2);
plot(output,'LineWidth',2);
title('AMI编码后');
axis([1 length(output) -1.5 1.5]);
% HDB3编码
% 输入信号
input = [0 1 0 0 1 0 -1 0 1 0];
% HDB3编码
output = zeros(1,length(input));
count = 0;
last = 0;
for i=1:length(input)
if input(i) == 0
output(i) = 0;
else
output(i) = last + input(i);
last = output(i);
if output(i) == 0
count = count + 1;
if count == 4
count = 0;
if mod(i,2) == 0
output(i-3:i) = [-1 -1 0 0];
else
output(i-3:i) = [1 1 0 0];
end
end
else
count = 0;
end
end
end
% 绘制波形图像
figure;
subplot(2,1,1);
plot(input,'LineWidth',2);
title('HDB3编码前');
axis([1 length(input) -1.5 1.5]);
subplot(2,1,2);
plot(output,'LineWidth',2);
title('HDB3编码后');
axis([1 length(output) -1.5 1.5]);
阅读全文