差分曼彻斯特编码规则:
1.输入二进制数为0时,电平发生翻转;输入二进制数为1时,保持上一个电平跳变规律
2.电平信号从每个时间间隔的开始跳
波形示意图:
差分曼彻斯特matlab代码:
clear all; %clear all 清除所有的变量
close all; %如果开了多个绘图窗口,用这个命令将它们一起关掉。
clc; %清空命令窗口中的所有内容
M=13; %产生码元数
L=60; %每码元复制L次
Ts=1; %每个码元的宽度,即码元的持续时间
Rb=1/Ts; %码元速率1
dt=Ts/L; %采样间隔
fs = 1/dt %频率
TotalT=M*Ts; %总时间
t=0:dt:TotalT-dt; %时间
% wave=randi([0,1],1,M); %产生二进制随机码,M为码元个数
wave = [1,1,1,0,0,0,1,0,0,0,1,0,0]; %指定输入的二进制数
%% 差分曼彻斯特
dnrz_diff_manchester = zeros(1, L * M);
last_level = 1; % 电平
for i = 1:length(wave)
if wave(i) == 0
last_level = -last_level; % 电平
dnrz_diff_manchester((i - 1) * L + 1 : (i - 1) * L + L/2) = last_level;
dnrz_diff_manchester((i - 1) * L + L/2 + 1 : i * L) = -last_level;
elseif wave(i) == 1
dnrz_diff_manchester((i - 1) * L + 1 : (i - 1) * L + L/2) = last_level;
dnrz_diff_manchester((i - 1) * L + L/2 + 1 : i * L) = -last_level;
end
end
%% 绘制图形
figure(1);
subplot(412)
plot(t, dnrz_diff_manchester);
title('差分曼彻斯特');
axis([0, TotalT, -1.1, 1.1]);