用matlab编程实现单极性归零码、单极性不归零码的时域和功率谱密度图
时间: 2023-12-11 09:04:47 浏览: 112
单极性归零码和单极性不归零码是数字通信中常用的编码方式,可以通过Matlab实现它们的时域和功率谱密度图。下面是实现过程:
单极性归零码:
```
% 生成单极性归零码
data = [1 0 1 1 0 0 1 0 1 1 0 0];
% 把1映射到正电平,0映射到负电平
for i = 1:length(data)
if data(i) == 1
data(i) = 1;
else
data(i) = -1;
end
end
% 把每个符号拓展成两个采样点
N = length(data)*2;
polar_nrz = zeros(1, N);
for i = 1:length(data)
if data(i) == 1
polar_nrz(2*i-1:2*i) = [1 -1];
else
polar_nrz(2*i-1:2*i) = [-1 1];
end
end
% 绘制时域波形
figure;
subplot(2,1,1);
plot(polar_nrz);
title('Single Polar NRZ Code (Time Domain)');
xlabel('Time');
ylabel('Amplitude');
% 绘制功率谱密度图
subplot(2,1,2);
P = abs(fft(polar_nrz)).^2/N;
f = linspace(-0.5, 0.5, N);
plot(f, fftshift(P));
title('Single Polar NRZ Code (Power Spectral Density)');
xlabel('Frequency');
ylabel('Power');
```
单极性不归零码:
```
% 生成单极性不归零码
data = [1 0 1 1 0 0 1 0 1 1 0 0];
% 把1映射到正电平,0映射到负电平
for i = 1:length(data)
if data(i) == 1
data(i) = 1;
else
data(i) = -1;
end
end
% 把每个符号拓展成两个采样点
N = length(data)*2;
polar_nrz = zeros(1, N);
for i = 1:length(data)
if data(i) == 1
polar_nrz(2*i-1:2*i) = [1 1];
else
polar_nrz(2*i-1:2*i) = [-1 -1];
end
end
% 绘制时域波形
figure;
subplot(2,1,1);
plot(polar_nrz);
title('Single Polar NRZ Code (Time Domain)');
xlabel('Time');
ylabel('Amplitude');
% 绘制功率谱密度图
subplot(2,1,2);
P = abs(fft(polar_nrz)).^2/N;
f = linspace(-0.5, 0.5, N);
plot(f, fftshift(P));
title('Single Polar NRZ Code (Power Spectral Density)');
xlabel('Frequency');
ylabel('Power');
```
以上代码中,先生成了随机的数字序列作为数据,然后对于单极性归零码和单极性不归零码,都进行了映射和拓展,得到了每个符号对应的波形。最后,分别绘制了时域波形和功率谱密度图。
阅读全文