无线通信--波束赋形(附MATLAB代码)

1)用处

  • Sub6G 频段,作为当前 5G 容量的主力军,载波带宽可达 100MHz,一般采用采用数字波束赋形,通过 64 通道发射来实现小区内时频资源的多用户复用,下行最大可同时发射 24 路独立信号,上行独立接收 12 路数据。
    在这里插入图片描述

  • 在毫米波 mmWave 频段中,一般采用混合波束赋形:

    • 图中第一个波束赋形:是基于模拟电路实现的模拟波束赋形器,用于对信号进行宽角度的波束赋形
    • 图中第二个波束赋形:是基于数字信号处理技术实现的数字波束赋形器,用于对信号进行精细的波束赋形。
      在这里插入图片描述

2)区别预编码和波束成形

参考链接:https://zhuanlan.zhihu.com/p/35923884

(1)Precoding

  1. Digital beamforming即为Precoding,Digital beamforming/Precoding通过基带对信号进行处理,可以让每根天线上的发送信号都不同,包括相位和幅值,所以Digital beamforming/Precoding的处理可以更加灵活的产生多个方向和功率强度均不同的波束,更加有效的利用空间分集。
  2. Precoding能够向多个用户同时发送多个数据流,在数字基带那里为了实现空间复用多流传输进行的是precoding
  3. Precoding经过数字域的信号处理后可以灵活的产生信号,可以将非视距NLOS路径增益也考虑在信号处理中,所以Precoding可以针对多径信道进行预编码处理,而且Precoding并不是产生了固定方向的波束,而且处理后的信号在空间中传输的效果等效于向不同用户发送了不同的波束。(和下面3对应)
  4. Precoding可以调整信号的相位和功率,可进行有效的功率控制。

另一篇文章有提到MIMO预编码:

(2)Beamforming

  1. Beamforming通常指的是Analog beamforming。
  2. 在Analog beamforming中,天线上的数字信号(所有天线处理的是同一个信号)通过模拟域的相移器对信号的相位进行调整,从而产生特定方向的波束。Beamforming向某一个方向的单用户或用户群发送单个数据流;
  3. Beamforming向特定方向发送波束,所以通常被应用在毫米波系统里,因为在毫米波系统中信道是视距传输LOS信道,用户只有一条功率很强的传输路径。
  4. Beamforming只是通过相移器调整信号相位,不能实现功率控制。

3)波束赋性矩阵

波束赋形矩阵的维度取决于天线阵列的数量。在基于线性天线阵列的波束赋形系统中,波束赋形矩阵通常是一个复数矩阵,其大小为 M × N M \times N M×N,其中 M M M 表示接收端天线的数量, N N N 表示发射端天线的数量。

在这种情况下,波束赋形矩阵的第 i i i 列表示发射端第 i i i 个天线的输出向量在接收端各个天线上的接收功率。每个元素是一个复数,表示在该方向上的相对相位和幅度,用于控制天线的辐射方向和波束形状。

4)空间复用和分集

波束赋形是一种基于天线阵列的信号预处理技术,波束赋形通过调整天线阵列中每个阵元的加权系数产生具有指向性的波束,从而能够获得明显的阵列增益 。波束赋形既可以用于信号发射端,又可以用于信号接收端。

波束赋形可以看作是一种空间复用技术,因为它可以在同一条路径的多个独立子信道上传输不同数据,提高系统容量。波束赋形也可以看作是一种空间分集技术,因为它可以在多条独立路径上传输相同的数据,接收端通过分集合并技术,抵抗信道衰落,提高传输可靠性,降低误码率。波束赋形的具体效果取决于天线阵列的结构、信号的调制方式、信道的特性等因素。

示例matlab代码

  • 这里使用一个单位圆上的相位旋转作为例子,生成波束赋形矩阵 W W W,然后使用波束赋形矩阵和数据符号来构造发送信号 x x x
  • 矩阵 H H H 来表示信道传输矩阵,它的大小为 M × N M \times N M×N,并且使用 W W W 来表示波束赋形矩阵,它的大小为 N × 1 N \times 1 N×1。具体来说,我们可以使用矩阵 H H H 和向量 W W W 来计算接收信号向量 y y y
  • 在接收端,我们使用最大比合并算法计算权重向量 w w w,然后使用波束赋形矩阵 W W W 对接收信号 y y y 进行波束赋形。
% 设定参数
M = 4; % 接收端天线数
N = 8; % 发射端天线数
SNR = 10; % 信噪比(dB)

% 随机生成传输矩阵 H
H = (randn(M,N)+1i*randn(M,N))/sqrt(2);

% 生成随机数据符号
s = sign(randn(N,1));

% 生成波束赋形矩阵 W
W = exp(1i*2*pi*(0:N-1)'/N);

% 发送信号 x
x = W*s;

% 添加高斯白噪声
P = var(x)/10^(SNR/10);
n = sqrt(P/2)*(randn(M,1)+1i*randn(M,1));
y = H*x + n;

% 接收端使用最大比合并算法进行信号处理,计算权重向量并进行波束赋形
% 计算最大比合并权重向量 w
w = H'*inv(H*H')*y;

% 进行波束赋形
y_hat = W'*w;

% 计算误差
error = norm(s - y_hat)^2;

上面的代码好像有点问题?有无小伙伴会改呢,欢迎指正。下面给出一个MISO场景下的波束赋形的代码:

% 假设系统有两个发射天线和一个接收天线
Nt = 2; % 发射天线数量
Nr = 1; % 接收天线数量

% 生成随机发射信号矩阵
Tx = randn(Nt, 1);

% 生成接收信号矩阵
H = randn(Nr, Nt); % 信道矩阵
noise = randn(Nr, 1); % 噪声矩阵
Rx = H * Tx + noise; % 接收信号

% 波束赋形
W = H'; % 采用最大比组合的波束赋形矩阵
Tx_beamformed = W * Rx;

% 输出结果
disp('发射信号矩阵:');
disp(Tx);
disp('接收信号矩阵:');
disp(Rx);
disp('波束赋形矩阵:');
disp(W);
disp('波束赋形后的发射信号矩阵:');
disp(Tx_beamformed);

猜你喜欢

转载自blog.csdn.net/qq_45889056/article/details/129647285
今日推荐