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

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

首先,以下使用的参数为
信息速率R_b=8 bit/s
码元速率R_s=R_b/log_2(M)=\frac{8}{log_28} symbol/s=2.6667 symbol/s
信息间隔T_b=\frac{1}{R_b}=0.125 s
码元间隔T_s=\frac{1}{R_s}=0.375 s
每个码元的采样点数 8个
采样间隔T=T_s/8=0.0469s
采样率F_s=\frac{1}{T}=21.333Hz

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


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

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

PAM载波与信号.png

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

NRZ功率谱密度.png

理论的PAM功率谱密度可以使用以下公式计算
P_s(f)=\frac{\sigma^2_a}{T_s}|G_T(f)|^2+\frac{m^2_a}{T^2_s}\mathop{\Sigma}^{+\infty}_{-\infty}|G_T(\frac{m}{T_s})|^2\delta(f-\frac{m}{T_s})
信号的功率谱可以被分为两部分,一部分是由波形决定的连续谱,另一部分是离散的线谱,间隔为\frac{1}{T_s}。如果随机序列{a_n}的均值为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)")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容