基于MATLAB的条件双相码和Miller码发生器
时间: 2023-12-06 08:03:52 浏览: 82
下面是一个基于MATLAB的条件双相码和Miller码发生器的示例代码:
```matlab
% 条件双相码发生器
clc; clear all; close all;
% 输入数据
data = [1 0 1 1 0 1 0];
% 条件双相码生成
code(1) = 1; % 初始化为高电平
for i = 1:length(data)
if data(i) == 1
code(2*i) = -code(2*i-1);
code(2*i+1) = code(2*i-1);
else
code(2*i) = code(2*i-1);
code(2*i+1) = -code(2*i-1);
end
end
% 画图
t = 0:0.01:length(data);
n = 1;
for i = 1:length(t)
if t(i) >= n-1 && t(i) < n
y(i) = code(n);
else
y(i) = code(n);
n = n+1;
end
end
plot(t, y, 'LineWidth', 1.5);
axis([0 length(data) -1.5 1.5]);
title('条件双相码波形图');
xlabel('时间');
ylabel('电平');
% Miller码发生器
clc; clear all; close all;
% 输入数据
data = [1 0 1 1 0 1 0];
% Miller码生成
code(1) = 1; % 初始化为高电平
for i = 1:length(data)
if data(i) == 1
code(2*i) = code(2*i-1);
code(2*i+1) = -code(2*i-1);
else
code(2*i) = -code(2*i-1);
code(2*i+1) = code(2*i-1);
end
end
% 画图
t = 0:0.01:length(data);
n = 1;
for i = 1:length(t)
if t(i) >= n-1 && t(i) < n
y(i) = code(n);
else
y(i) = code(n);
n = n+1;
end
end
plot(t, y, 'LineWidth', 1.5);
axis([0 length(data) -1.5 1.5]);
title('Miller码波形图');
xlabel('时间');
ylabel('电平');
```
该代码中,首先定义了输入的数据序列 `data`,然后分别生成了条件双相码和Miller码的码元序列 `code`,最后通过画图展示了它们的波形。其中,为了方便展示,采用了离散化的方法,将时域分成了很多小段,并在每一段的中间点采样,得到了离散的波形。
阅读全文