产生一组单极性归零码和单极性不归零码,并绘制出其时域波形 MATBAL
时间: 2023-12-06 18:44:44 浏览: 153
单极性归零码(unipolar return-to-zero code)是一种数字编码方式,每个二进制位只有两种状态,即高电平和低电平,高电平代表1,低电平代表0,而且每个二进制位间都有一个归零区间。单极性不归零码(unipolar non-return-to-zero code)也是一种数字编码方式,每个二进制位只有两种状态,即高电平和低电平,高电平代表1,低电平代表0,但是每个二进制位间没有归零区间。
下面给出一组4位单极性归零码和单极性不归零码及其时域波形:
单极性归零码:0101
单极性归零码时域波形:
```
__ __
| | | |
___| |____| |_
0 1 2 3 4
```
单极性不归零码:0101
单极性不归零码时域波形:
```
___ ___ ___
| | | | | |
| |_| |_| |
0 1 2 3
```
其中,横坐标表示时间,纵坐标表示电平。在单极性归零码时域波形中,每个二进制位的高电平部分之间都有一个归零区间,用来表示0;在单极性不归零码时域波形中,每个二进制位的高电平部分之间没有归零区间,用来表示1。
相关问题
用matlab产生一组单极性归零码和单极性不归零码,并绘制出其时域波形
单极性归零码(NRZ)和单极性不归零码(NRZ-L)是两种常见的数字通信编码方式。可以通过MATLAB代码生成这些编码并绘制出其时域波形。
以下是生成单极性归零码和单极性不归零码的MATLAB代码示例:
```matlab
% 生成单极性归零码
bits = [1 0 1 1 0 1 0 0]; % 待编码的比特串
signal = zeros(1, length(bits)*10);
for i = 1:length(bits)
if bits(i) == 1
signal((i-1)*10+1:i*10) = 1;
end
end
plot(signal);
title('NRZ Code');
xlabel('Time');
ylabel('Amplitude');
% 生成单极性不归零码
bits = [1 0 1 1 0 1 0 0]; % 待编码的比特串
signal = zeros(1, length(bits)*10);
last_bit = 1;
for i = 1:length(bits)
if bits(i) == 1
signal((i-1)*10+1:i*10) = last_bit;
last_bit = -last_bit;
else
signal((i-1)*10+1:i*10) = last_bit;
end
end
plot(signal);
title('NRZ-L Code');
xlabel('Time');
ylabel('Amplitude');
```
以上代码中,我们先定义了一个待编码的比特串 `bits`,然后根据编码方式生成相应的信号波形。在单极性归零码中,每个1都对应着一个高电平,每个0都对应着一个低电平;在单极性不归零码中,每个1都会对应着一个正脉冲或负脉冲,每个0则是上一个脉冲的反向。最后使用MATLAB的 `plot` 函数绘制出时域波形。
产生一组单极性归零码和单极性不归零码,并绘制出其时域波形,用matlab
单极性归零码(NRZI):
```matlab
bits = [1 0 1 0 1]; % 待编码的比特流
T = length(bits); % 比特流的长度
t = 0:0.01:T; % 时间轴
signal = zeros(1, length(t)); % 初始化信号
prev_bit = 1; % 上一个比特位的值
for i = 1:T
if bits(i) == 1 % 1 转换为上一个比特位的取值
signal((i-1)*100+1:i*100) = prev_bit;
else % 0 转换为上一个比特位的取反值
signal((i-1)*100+1:i*100) = -prev_bit;
prev_bit = -prev_bit; % 取反
end
end
plot(t, signal, 'LineWidth', 2);
axis([0 T -1.5 1.5]);
xlabel('时间');
ylabel('电压');
title('NRZI');
```
单极性不归零码(NRZ):
```matlab
bits = [1 0 1 0 1]; % 待编码的比特流
T = length(bits); % 比特流的长度
t = 0:0.01:T; % 时间轴
signal = zeros(1, length(t)); % 初始化信号
for i = 1:T
if bits(i) == 1 % 1 对应高电平
signal((i-1)*100+1:i*100) = 1;
else % 0 对应低电平
signal((i-1)*100+1:i*100) = 0;
end
end
plot(t, signal, 'LineWidth', 2);
axis([0 T -0.5 1.5]);
xlabel('时间');
ylabel('电压');
title('NRZ');
```
运行以上代码可以得到两个波形图像。
阅读全文