数字基带波形及其功率谱密度

本文将图解由0/1组成的二进制信息序列映射为M进制的码元序列,使用PAM调制。并通过傅里叶变换进行频域分析。

首先,以下使用的参数为
信息速率
码元速率
信息间隔
码元间隔
每个码元的采样点数 8个
采样间隔
采样率

首先,随机生成1500个二进制信息,信息如图(a)所示,每三位二进制信息被映射为一个八进制码元,1500个二进制信息被映射为500个八进制码元,码元序列在图(b)中也被绘制出。


二进制信息与M进制信息.png

将码元序列的PAM调制如下图所示,使用的信号波形为单极性不归零码。信号的时长为.

PAM载波与信号.png

将调制后的波形进行傅里叶变换进行频域分析
图(a)中的功率谱密度中包括两部分,直流分量和连续谱。(b)中的功率密度谱是去除直流分量后的连续谱,可以明显观察到,功率谱的主瓣分布在内。因为使用的是矩形波形,所以频谱泄露现象明显,在外仍然有泄露的能量分布。

NRZ功率谱密度.png

理论的PAM功率谱密度可以使用以下公式计算

信号的功率谱可以被分为两部分,一部分是由波形决定的连续谱,另一部分是离散的线谱,间隔为。如果随机序列的均值为0,则离散的部分会消失。

附 Matlab参考代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% > 未编码BPSK传输BER性能
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 基本参数设定
InfoLength = 1500; % 信息长度
M = 8; % 符号进制数
SymbolLength = ceil(InfoLength/log2(M)); % 码元长度

Rb = 8; % 比特速率 bit/s
Rs = Rb/log2(M); % 码元速率 symbol/s
Tb = 1/Rb; % 二进制信息间隔
Ts = 1/Rs; % M进制码元间隔
%% 信息序列处理
figure
Info = round(rand(InfoLength,1)); % 生成随机信息序列
subplot(2, 1, 1)
stem(Info)
xlabel("n")
ylabel("Infomation Sequence")
title("(a)二进制信息序列")

SymbolVector = reshape(Info, log2(M), SymbolLength);
Symbol = zeros(SymbolLength, 1); % M进制码元序列
for k=1:log2(M)
    Symbol = Symbol + 2^(k-1)*SymbolVector(k,:)';
end
subplot(2, 1, 2)
stem(Symbol)
xlabel("n")
ylabel("Symbol Sequence")
title("(b)M进制码元序列")

%% 单极性不归零码 NRZ
A = 1; % 电平幅度
duration_signal = SymbolLength*Ts; 
samples_per_symbol = 8; % 每符号采样数
interval_sample = Ts/samples_per_symbol; % 采样间隔
carrier = A*ones(SymbolLength*samples_per_symbol,1); % 载波
% 载波的时间坐标
time_carrier = (1:SymbolLength*samples_per_symbol)*Ts/samples_per_symbol; 

figure
% 绘制载波
subplot(2, 1, 1)
plot(time_carrier, carrier)
xlabel("time/s")
ylabel("Carrier")
title("(a)载波波形")
% 生成信号波形
signal = reshape(repmat(Symbol', samples_per_symbol, 1)*A,...
    SymbolLength*samples_per_symbol, 1); 
% 绘制信号波形
subplot(2, 1, 2)
plot(time_carrier, signal.*carrier, '-')
xlabel("time/s")
ylabel("(b)Signal")
title("(b)信号波形")

figure
% 绘制信号功率谱密度
subplot(2, 1, 1)
fre_signal = fft(signal);
fre_signal = [fre_signal(length(fre_signal)/2+1:length(fre_signal)); ...
    fre_signal(1:length(fre_signal)/2)];
plot(((-length(fre_signal)/2+1:length(fre_signal)/2))/duration_signal, ...
    abs(fre_signal))
title("(a)NRZ功率谱密度(包含直流分量)")
xlabel("Frequency/Hz")
ylabel("P(f)")

% 绘制信号功率谱密度
subplot(2, 1, 2)
fre_signal = fft(signal);
fre_signal(1) = 0;
fre_signal = [fre_signal(length(fre_signal)/2+1:length(fre_signal)); ...
    fre_signal(1:length(fre_signal)/2)];
plot(((-length(fre_signal)/2+1:length(fre_signal)/2))/duration_signal,...
    abs(fre_signal))
title("(b)NRZ功率谱密度(不包含直流分量)")
xlabel("Frequency/Hz")
ylabel("P(f)")

你可能感兴趣的:(数字基带波形及其功率谱密度)