使用 MATLAB 模拟数字信号波形

本文将使用 MATLAB 生成随机二元序列,并分别用四种常见的数字信号波形进行表示,包括单极性不归零 (NRZ)、单极性归零 (RZ)、双极性不归零 (NRZ)、双极性归零 (RZ) 波形。同时,还会绘制相应的信号波形示意图和功率谱图。

1. 生成随机二元序列

首先,生成一个长度为 100 的随机二元序列,其中 0 和 1 的概率相等。

% 生成随机二元序列
seq = randi([0,1],1,100);

2. 单极性不归零 (NRZ) 波形

在 NRZ 波形中,信号电平保持不变,直到下一个码元到来。我们将二元序列中的 0 和 1 分别映射为 -1 和 1,然后绘制波形图。

% 单极性不归零波形
unipolar_nrz = 2*seq-1; % 将二元序列转为 1 和 -1
figure;
subplot(2,1,1);
plot(unipolar_nrz);
title('Unipolar NRZ');
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
pwelch(unipolar_nrz,[],[],[],'onesided');
title('Power Spectrum (Unipolar NRZ)');
xlabel('Frequency');
ylabel('Power');

3. 单极性归零 (RZ) 波形

在 RZ 波形中,信号电平在码元中间恢复到零电平。我们将每个码元表示为两个脉冲,第一个脉冲对应于码元值,第二个脉冲为零。

% 单极性归零波形
unipolar_rz = zeros(1,length(seq)*2);
for i = 1:length(seq)
    if seq(i) == 1
        unipolar_rz((i-1)*2+1:i*2) = [1 0];
    else
        unipolar_rz((i-1)*2+1:i*2) = [-1 0];
    end
end
figure;
subplot(2,1,1);
plot(unipolar_rz);
title('Unipolar RZ');
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
pwelch(unipolar_rz,[],[],[],'onesided');
title('Power Spectrum (Unipolar RZ)');
xlabel('Frequency');
ylabel('Power');

4. 双极性不归零 (NRZ) 波形

在双极性 NRZ 波形中,'0' 码元表示为零电平,'1' 码元表示为正电平或负电平,相邻 '1' 码元之间的极性相反。

% 双极性不归零波形
bipolar_nrz = seq;
bipolar_nrz(bipolar_nrz == 0) = -1;
figure;
subplot(2,1,1);
plot(bipolar_nrz);
title('Bipolar NRZ');
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
pwelch(bipolar_nrz,[],[],[],'onesided');
title('Power Spectrum (Bipolar NRZ)');
xlabel('Frequency');
ylabel('Power');

5. 双极性归零 (RZ) 波形

在双极性 RZ 波形中,'0' 码元表示为两个零电平,'1' 码元表示为两个脉冲,每个脉冲对应于码元值,相邻 '1' 码元之间的极性相反。

% 双极性归零波形
bipolar_rz = zeros(1,length(seq)*2);
prev = 1;
for i = 1:length(seq)
    if seq(i) == 1
        if prev == 1
            bipolar_rz((i-1)*2+1:i*2) = [1 0];
            prev = -1;
        else
            bipolar_rz((i-1)*2+1:i*2) = [-1 0];
            prev = 1;
        end
    else
        bipolar_rz((i-1)*2+1:i*2) = [0 0];
    end
end
figure;
subplot(2,1,1);
plot(bipolar_rz);
title('Bipolar RZ');
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
pwelch(bipolar_rz,[],[],[],'onesided');
title('Power Spectrum (Bipolar RZ)');
xlabel('Frequency');
ylabel('Power');

总结

通过以上 MATLAB 代码,我们分别生成了单极性 NRZ、单极性 RZ、双极性 NRZ、双极性 RZ 四种常见的数字信号波形,并绘制了对应的波形示意图和功率谱图。这些波形在数字通信中被广泛使用,根据不同的应用场景,选择合适的波形可以有效地提高传输效率和抗干扰能力。

MATLAB 信号波形模拟:单极性、双极性 NRZ/RZ 波形及功率谱

原文地址: https://www.cveoy.top/t/topic/no9x 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录