如何生成具有特定带宽的随机数据

信息处理 数字通讯 带宽
2022-02-01 18:39:33

我生成了一些随机数据(实际上是使用 MATLAB 生成的位randi),然后将这些位转换为 BPSK(1 和 -1)。之后,我使用 RRC 脉冲(滚降因子为 0.35,每个符号 8 个符号和 4 个样本)来创建波形。

那么脉冲形状的 BPSK 的带宽将是(是滚降因子):β

BW=RS(1+β)

我的问题是如何确定(数据速率)。我的意思是,我使用的是,而不是实际的数据源,所以最初我试图弥补这个值。我想,在脉冲形状之后,采样频率是,因为上面提到的每个符号有 4 个样本),那么带宽应该类似于并尝试绘制最终采样率为的脉冲形状序列的 DFT :RsrandiRs=1MHzfs=spsRS=4MHzsps=4BW=(1+0.35)1MHz=1.35MHz4MHz

DFT 图

如您所见,带宽远不及1.35MHz

所以这些是我的问题:

  1. 我如何操纵/控制RS
  2. 我的计算出了什么问题?

谢谢!

2个回答

我怎样才能操纵/控制RS

您通常从所需的脉率然后,每个符号的样本数为,其中是采样率,得到的信号带宽将为,其中是您选择使用的脉冲中的多余带宽。RSfsTSfsTS=1/RSB=(1+β)RS/2β

在其他情况下,您有所需的带宽在这种情况下,脉率由确定。采样率再次取决于您想要的每个符号的样本数。BRS=2B/(1+β)

如果您使用高阶或正交调制,则每个脉冲将传输位,其中是允许的脉冲幅度数。然后,,其中是比特率。上面的其他方程保持不变。k=2MMRS=Rb/kRb

我的计算出了什么问题?

您在带宽公式中错过了 =0)的速率位每秒,您需要使用多余的带宽,您需要,这与您的结果一致。1/2RS=106βB=500 kHz0.35B=500×1.35=675 kHz

为了完整起见,这里有一些 Matlab 代码和结果图:

b = randi([0,1],10000,1); % generate bits
a = 2*b-1;  % generate pulse amplitudes
Rs = 1; % define the pulse rate
Ts = 1/Rs;
fs = 4; % define the sampling frequency
beta = 0.35; % define the EBW
p = rcosdesign(beta, 20, Ts*fs); % raised cosine pulse with 4 sps and 0.35 EBW
% Now we upsample the amplitudes by a factor fs.
a_up = upsample(a,fs);
% The transmitted signal is the convolution of a_up with p
s = conv(p,a_up);
% Let's see the spectrum of s:
S = fft(s);
L = length(s);
P2 = abs(S/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = fs*(0:(L/2))/L;
plot(f,P1);
% Plot a line at the bandwidth
hold on; plot([0.675, 0.675], [0,0.02],'r'); hold off;

在此处输入图像描述

  1. 在 BPSK 的情况下,数据速率等于符号速率(每​​个符号一位)。控制的一种方法是改变调制。例如,您可以通过选择更高阶的调制来增加每个符号的位数,例如 16-QAM,每个符号有 4 位。RS

  2. 你的计算没有问题。该图是单面频谱,因此您只能看到一半的带宽。它大约在 1.35 MHz 的一半左右消失,因此假设您的代码是正确的,我认为绘图或计算没有什么特别的错误。