产生一组单极性归零码和单极性不归零码,并绘制出其时域波形。产生一组随机数字序列,并绘制该码对应的AMI码。用matlab
时间: 2023-08-20 21:07:10 浏览: 171
单极性归零码和单极性不归零码是常用的数字通信编码方式之一,下面用MATLAB来生成和绘制这两种编码的时域波形。
单极性归零码(NRZI):
```matlab
clc, clear, close all;
% 参数设置
bit_seq = [1 0 1 1 0 1 0 0]; % 待编码的比特序列
T = length(bit_seq); % 数据长度
Tb = 1; % 数据比特周期
A = 1; % 幅值
% 编码
NRZI_seq = zeros(1, T);
prev_bit = 1;
for i = 1:T
if bit_seq(i) == 1
NRZI_seq(i) = prev_bit * -A;
prev_bit = -prev_bit;
else
NRZI_seq(i) = prev_bit * A;
end
end
% 绘制波形
t = linspace(0, T*Tb, T*100);
NRZI_wave = zeros(1, length(t));
for i = 1:T
NRZI_wave((i-1)*100+1:i*100) = NRZI_seq(i);
end
figure();
plot(t, NRZI_wave, 'LineWidth', 2);
axis([0 T*Tb -1.5 1.5]);
title('NRZI码时域波形');
xlabel('时间(Tb)');
ylabel('幅值');
grid on;
```
单极性不归零码(NRZ):
```matlab
clc, clear, close all;
% 参数设置
bit_seq = [1 0 1 1 0 1 0 0]; % 待编码的比特序列
T = length(bit_seq); % 数据长度
Tb = 1; % 数据比特周期
A = 1; % 幅值
% 编码
NRZ_seq = zeros(1, T);
for i = 1:T
if bit_seq(i) == 1
NRZ_seq(i) = -A;
else
NRZ_seq(i) = A;
end
end
% 绘制波形
t = linspace(0, T*Tb, T*100);
NRZ_wave = zeros(1, length(t));
for i = 1:T
NRZ_wave((i-1)*100+1:i*100) = NRZ_seq(i);
end
figure();
plot(t, NRZ_wave, 'LineWidth', 2);
axis([0 T*Tb -1.5 1.5]);
title('NRZ码时域波形');
xlabel('时间(Tb)');
ylabel('幅值');
grid on;
```
生成随机数字序列和对应的AMI码:
```matlab
clc, clear, close all;
% 参数设置
bit_seq = round(rand(1, 8)); % 生成8个随机比特
T = length(bit_seq); % 数据长度
Tb = 1; % 数据比特周期
A = 1; % 幅值
% 生成AMI码
AMI_seq = zeros(1, T);
prev_bit = 1;
for i = 1:T
if bit_seq(i) == 1
AMI_seq(i) = prev_bit * A;
prev_bit = -prev_bit;
else
AMI_seq(i) = 0;
end
end
% 绘制波形
t = linspace(0, T*Tb, T*100);
AMI_wave = zeros(1, length(t));
for i = 1:T
AMI_wave((i-1)*100+1:i*100) = AMI_seq(i);
end
figure();
plot(t, AMI_wave, 'LineWidth', 2);
axis([0 T*Tb -1.5 1.5]);
title('AMI码时域波形');
xlabel('时间(Tb)');
ylabel('幅值');
grid on;
```
以上就是MATLAB生成和绘制单极性归零码、单极性不归零码和AMI码的代码和结果。
阅读全文