产生单极性归零码,并绘制出其时域波形,用matlab,简单些
时间: 2023-10-26 19:06:03 浏览: 124
单极性归零码(Unipolar Return-to-Zero,URZ)是一种数字编码方式,其中信号的电平在每个时隙内始终保持为正或负,且每个位周期内都有一个零电平,称为归零。下面是用MATLAB实现产生单极性归零码并绘制其时域波形的简单代码:
```matlab
% 定义参数
n = 5; % 位数
bit = [1 0 1 1 0]; % 二进制码
% 产生单极性归零码
urz = []; % 初始化码流
for i = 1:n
if bit(i) == 1
urz = [urz ones(1, 10)]; % 1 对应正电平,持续 10 个单位时间
else
urz = [urz zeros(1, 10)]; % 0 对应零电平,持续 10 个单位时间
end
end
% 绘制时域波形
t = 0:0.1:n; % 时间数组
plot(t, urz);
axis([0 n -0.5 1.5]); % 设置坐标轴范围
xlabel('Time'); ylabel('Amplitude');
title('Unipolar Return-to-Zero Code');
grid on;
```
运行以上代码,可以得到单极性归零码的时域波形图像。其中,1 对应正电平,持续 10 个单位时间;0 对应零电平,持续 10 个单位时间;每个位周期内都有一个零电平,称为归零。
相关问题
产生一组单极性归零码和单极性不归零码,并绘制出其时域波形。产生一组随机数字序列,并绘制该码对应的AMI码。用matlab
单极性归零码和单极性不归零码是常用的数字通信编码方式之一,下面用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码的代码和结果。
产生一组单极性归零码和单极性不归零码,并绘制出其时域波形,用matlab
单极性归零码(unipolar return-to-zero code):
```matlab
bits = [1 0 1 1 0 1 0];
T = 1; % bit duration
t = 0:T/100:T*(length(bits)-1);
signal = zeros(1,length(t)); % initialize signal
for i = 1:length(bits)
if bits(i) == 1
signal((i-1)*100+1:i*100) = 1;
else
signal((i-1)*100+1:i*100) = -1;
end
end
plot(t, signal, 'LineWidth', 2);
ylim([-2 2]);
grid on;
```
单极性不归零码(unipolar non-return-to-zero code):
```matlab
bits = [1 0 1 1 0 1 0];
T = 1; % bit duration
t = 0:T/100:T*(length(bits)-1);
signal = zeros(1,length(t)); % initialize signal
for i = 1:length(bits)
if bits(i) == 1
signal((i-1)*100+1:i*100) = 1;
end
end
plot(t, signal, 'LineWidth', 2);
ylim([-2 2]);
grid on;
```
时域波形如下图所示:
![unipolar_codes](https://i.imgur.com/J4wNp5v.png)
阅读全文