用MATLAB产生一组双极性码和双极性不归零码,并绘制出其时域波形
时间: 2024-11-06 20:18:39 浏览: 52
双极性归零码的Matlab实现
在MATLAB中生成双极性码(Polar Code)和双极性不归零码(Bipolar NRZ code),首先你需要安装并导入通信系统工具箱( Communications System Toolbox)。以下是一个简化的步骤:
1. **创建信号**
- 对于双极性码,你可以直接使用二进制序列,每个比特取值 `-1` 和 `1`。
- 双极性不归零码则可以将二进制序列转换成脉冲宽度编码,0对应低电平(比如说 `0` 或 `0V`),1对应高电平(比如 `1` 或 `5V`)。
```matlab
% 生成随机二进制序列(假设长度为100)
data = randi([0 1], 100, 1); % 使用randi函数生成0和1
% 对于双极性码
polar_code = data .* 2 - 1; % 将0变为-1,1变为1
% 对于双极性NRZ码
bipolar_nrz = sign(data); % 将0变为+1,1变为-1
```
2. **时域波形绘制**
- 使用 `plot` 函数绘制时域波形。
```matlab
% 时域波形
t = 0:1/fs:(length(polar_code)-1)/fs; % 创建时间轴,假设采样频率 fs=1 (单位为秒)
time_domain_polar = t; % 对于双极性码,可以直接用时间轴作为x轴
time_domain_bnrz = [zeros(1, find(data == 0)); ones(1, find(data == 1))]; % 对于NRZ,将数据点间隔开
% 绘制
figure;
subplot(2,1,1);
stem(time_domain_polar, polar_code);
xlabel('Time (s)');
ylabel('Amplitude');
title('Polar Code');
subplot(2,1,2);
stem(time_domain_bnrz, bipolar_nrz);
xlabel('Time (s)');
ylabel('Amplitude');
title('Bipolar NRZ Code');
```
阅读全文