【语音处理】使用块反射器的基于DFT的系统中用于旁瓣抑制的正交预编码(Matlab代码实现)

  👨‍🎓个人主页

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

使用块反射器的基于DFT的系统中用于旁瓣抑制的正交预编码研究

摘要

关键词

1. 引言

2. 基于DFT的波束形成系统

2.1 DFT波束形成原理

2.2 旁瓣问题

3. 基于块反射器的正交预编码方案

3.1 块反射器原理

3.2 正交预编码矩阵构造

3.3 预编码过程

3.4 接收端处理

4. 性能分析

4.1 旁瓣抑制效果

4.2 信号保真度

4.3 处理效率

5. 应用场景

5.1 语音通信

5.2 语音识别

5.3 音频处理

6. 结论与展望

6.1 研究成果总结

6.2 未来研究方向

📚2 运行结果

🎉3 参考文献

 🌈4 Matlab代码实现


💥1 概述

使用块反射器的基于DFT的系统中用于旁瓣抑制的正交预编码研究

基于离散傅里叶变换的系统,如正交频分复用(OFDM)和单载波频分多址(SC-FDMA),特别容易发生带外漏电。尽管已经提出了许多技术来抑制基于DFT的系统中的旁瓣,但计算复杂性和带外功率泄漏之间的令人满意的平衡仍然难以实现。 正交预编码是一种很有前途的线性技术,其中具有正交列的预编码矩阵的零空间旨在抑制旁瓣。特别是,Xu 和 Chen [1]、van de Beek [2] 和 Ma 等人 [3] 提出了产生出色带外抑制的正交预编码器。然而,它们的算术复杂性高---有源子载波数量的二次---这限制了它们的应用。 在本文中发现,如果使用块反射器而不是非结构化的酉变换来执行预编码,则算术复杂度可以变为线性而不是二次。实现的误码率无需支付任何惩罚。通过数值模拟表明,OFDM在峰均功率比方面的损失也非常小。 

摘要

本文探讨了基于离散傅里叶变换(DFT)的系统中,利用块反射器实现旁瓣抑制的正交预编码技术。通过构造特殊的预编码矩阵,结合块反射器的正交特性,有效降低了目标波束周围的能量扩散,从而实现了旁瓣抑制。本文详细阐述了该方案的原理、设计方法以及性能分析,并通过仿真实验验证了其有效性。

关键词

数字波束形成;离散傅里叶变换(DFT);旁瓣抑制;块反射器;正交预编码

1. 引言

随着无线通信技术的飞速发展,对更高频谱效率、更大系统容量的需求日益增长。数字波束形成(Digital Beamforming, DBF)技术作为一种空间信号处理方法,能够有效地将信号能量聚焦到目标用户,从而提高信噪比,抑制干扰,显著提升无线通信系统的性能。在众多波束形成算法中,DFT波束形成由于其实现简单、复杂度较低等优点,被广泛应用于各种无线通信系统,如5G、毫米波通信以及大规模MIMO等。

然而,传统的基于DFT的波束形成存在着固有的缺陷,即旁瓣电平较高。旁瓣会将信号能量泄露到非目标方向,造成对其他用户的干扰,降低系统容量;同时,信号能量分散,导致目标方向的信噪比降低,影响信号质量;此外,难以区分相邻的用户,影响多用户接入性能。因此,如何有效抑制基于DFT的波束形成系统中的旁瓣,成为了一个重要的研究课题。

目前,已有很多方法被提出用于抑制旁瓣,例如加权法(如汉宁窗、海明窗等)、迭代方法以及凸优化方法等。这些方法在一定程度上可以降低旁瓣电平,但往往会带来主瓣展宽、算法复杂度高等问题。近年来,基于正交预编码的旁瓣抑制方法引起了广泛的关注。该方法利用正交矩阵的特性,通过构造特殊的预编码矩阵,使得信号能量更加集中于目标波束,从而抑制旁瓣。本文提出了一种基于块反射器的正交预编码方案,用于基于DFT的系统中,旨在实现高效的旁瓣抑制。

2. 基于DFT的波束形成系统

2.1 DFT波束形成原理

DFT波束形成是一种常用的波束形成方法,其基本原理是通过对阵列接收信号进行DFT变换,将时域信号转换为频域信号,然后根据需要选择特定的频域分量进行加权求和,形成波束。具体来说,对于一个包含N个阵元的均匀线阵,其接收信号可以表示为:

其中,w 是加权向量,用于控制波束的形状和方向。

2.2 旁瓣问题

在基于DFT的波束形成系统中,由于DFT矩阵的固有特性,形成的波束往往具有较高的旁瓣电平。旁瓣会将信号能量泄露到非目标方向,造成对其他用户的干扰,降低系统容量;同时,信号能量分散,导致目标方向的信噪比降低,影响信号质量;此外,难以区分相邻的用户,影响多用户接入性能。因此,如何有效抑制旁瓣,成为了一个亟待解决的问题。

3. 基于块反射器的正交预编码方案

3.1 块反射器原理

块反射器(Block Reflector)是一种特殊类型的矩阵,它在信号处理中用于特定的数学运算。块反射器具有正交特性,即其转置等于其逆。利用这一特性,可以构造特殊的预编码矩阵,用于抑制旁瓣。

3.2 正交预编码矩阵构造

为了抑制旁瓣,我们构造了一个基于块反射器的正交预编码矩阵。该矩阵的设计目标是使得经过预编码后的信号在频域上具有更低的旁瓣电平。具体来说,我们首先构造一个块反射器矩阵 G,然后利用该矩阵对DFT矩阵进行修正,得到预编码矩阵 Wpre​:

Wpre​=GWN​

其中,WN​ 是原始的DFT矩阵。通过选择合适的块反射器矩阵 G,可以使得预编码矩阵 Wpre​ 具有更好的旁瓣抑制性能。

3.3 预编码过程

在发送端,首先对原始信号进行分帧和窗函数处理,然后将其输入到预编码模块中。预编码模块利用构造的预编码矩阵 Wpre​ 对信号进行预编码处理:

spre​=Wpre​s

其中,s 是原始信号向量,spre​ 是预编码后的信号向量。预编码后的信号经过DFT变换后,其频域表示将具有更低的旁瓣电平。

3.4 接收端处理

在接收端,对接收到的信号进行逆DFT变换,得到时域信号。然后,利用已知的预编码矩阵信息对信号进行解码处理,恢复出原始信号。由于预编码矩阵的正交特性,解码过程可以有效地消除预编码带来的影响,从而得到准确的原始信号。

4. 性能分析

4.1 旁瓣抑制效果

通过仿真实验验证了基于块反射器的正交预编码方案的旁瓣抑制效果。仿真结果表明,与传统的DFT波束形成相比,采用正交预编码方案后,系统的旁瓣电平显著降低。这表明该方案能够有效地将信号能量聚焦到目标波束,减少能量泄露到非目标方向。

4.2 信号保真度

在抑制旁瓣的同时,该方案还能够保持信号的原始特性,避免过多的失真。仿真结果表明,预编码后的信号在主瓣区域的幅度和相位特性与原始信号基本一致,这表明该方案在抑制旁瓣的同时没有引入显著的信号失真。

4.3 处理效率

通过矩阵运算实现预编码,该方案具有较低的计算复杂度,适合实时处理应用。仿真结果表明,在相同的硬件条件下,该方案的处理时间与传统DFT波束形成方法相当,但旁瓣抑制效果显著提升。

5. 应用场景

5.1 语音通信

在VoIP和移动通信中,通过正交预编码抑制旁瓣,可以提高语音通话质量。旁瓣的降低减少了信号能量在非目标方向的泄露,从而降低了对其他用户的干扰,提高了系统的整体性能。

5.2 语音识别

在语音识别系统中,减少旁瓣干扰可以提高识别率和准确性。旁瓣的降低使得语音信号在频域上的表示更加清晰,有利于语音识别算法提取关键特征,从而提高识别性能。

5.3 音频处理

在音乐和音频处理领域,通过频域处理提高音频的清晰度和质量。基于块反射器的正交预编码方案可以有效地抑制音频信号中的旁瓣成分,使得音频信号在频域上的表示更加纯净,从而提高音频的清晰度和质量。

6. 结论与展望

6.1 研究成果总结

本文提出了一种基于块反射器的正交预编码方案,用于基于DFT的系统中实现旁瓣抑制。通过构造特殊的预编码矩阵,结合块反射器的正交特性,有效地降低了目标波束周围的能量扩散,从而实现了旁瓣抑制。仿真结果表明,该方案在旁瓣抑制效果、信号保真度和处理效率等方面均表现出色。

6.2 未来研究方向

未来可以进一步研究和优化预编码矩阵的设计方法,使其在不同应用场景中更加高效。例如,可以探索基于机器学习的预编码矩阵优化方法,根据不同的噪声环境自适应调整预编码矩阵,以提升旁瓣抑制效果。此外,还可以研究如何将正交预编码技术与其他旁瓣抑制方法相结合,以进一步提高系统的整体性能。

📚2 运行结果

 

 部分代码:

figure(2);

PtotdBm = 46; % Total downlink power in dBm
Ptot = 1e-3 * 10^(PtotdBm/10); % same in W
S = [-300:-297, 297:300, -296:-1, 1:296]; % set of active sub-carriers (permuted!)
Psub = Ptot / length(S); % power per subcarrier (W)
Ts = 1e-3/15; % data length (in seconds)
Tg = 9*Ts/128; % cyclic prefix length (s)
T = Ts + Tg;

f = -10e6:0.005e6:40e6; % array of sample frequencies for plotting

kfTs = S' * ones(size(f)) - ones(size(S))' * f * Ts; % k - f Ts
a = sqrt(Psub) * T * exp(j*pi*(1-Tg/Ts)*kfTs) .* sinc((1+Tg/Ts)*kfTs);
% (11) but not forgetting the scaling factors

plot(f, 10*log10(sum(abs(a).^2)/(1e-3*T)), 'DisplayName', 'Standard OFDM');
grid on;
hold on;

M = [-6101, -6099, -5101, -5099, 5099, 5101, 6099, 6101] * 1e3; % nulling frequencies
R = length(M);
kMTs = S' * ones(size(M)) - ones(size(S))' * M * Ts; % k - M Ts
A2 = exp(j*pi*(1-Tg/Ts)*kMTs)' .* sinc((1+Tg/Ts)*kMTs)'; % (15)
% [~, ~, V] = svd(A2); % (7)
Gvdb = blockreflector2(A2');
V = eye(length(S)) - Gvdb*Gvdb';
Go = V(:, (R+1):length(S)); % (8)
plot(f, 10*log10(sum(abs(Go'*a).^2)/(1e-3*T)), ...
    'DisplayName', 'Precoded OFDM (van de Beek)');

% Skipping N-continuous OFDM that was originally a part of Fig. 3(a)...

% Now add the comparison with Ma et al. technique

phi = [-40e6:0.2e6:-5e6, 5e6:0.2e6:40e6]; % spectral leakage frequencies
kpTs = S' * ones(size(phi)) - ones(size(S))' * phi * Ts; % k - phi Ts
C = exp(j*pi*(1-Tg/Ts)*kpTs)' .* sinc((1+Tg/Ts)*kpTs)';
[~, ~, Vma] = svd(C);
Gma = blockreflector2(Vma(:, 1:R));
V = eye(length(S)) - Gma*Gma';
Popt = V(:, (R+1):length(S));

plot(f, 10*log10(sum(abs(Popt'*a).^2)/(1e-3*T)), ...
    'DisplayName', 'Precoded OFDM (Ma et al.)');
hold off;
ylim([-120, -20]);
xlabel('Frequency (Hz)');
ylabel('Power spectral density (dBm/Hz)');
legend(gca, 'show');

  % added for Code Ocean output
  % save the resulting plot to an HTML file using Plotly.js
%  fig2plotly(gcf, 'offline', true, 'filename', 'figure1');

  % finally, save the resulting plot to a PNG file (note the output directory)
  saveas(gcf, 'figure1.fig');

% Figure 3.  Now move on to PAPR calculations.

figure(3);
ie = 4; % use ie = 7 to get the same quality of results as in the paper
numiter = 10^ie; % number of Monte Carlo iterations for PAPR calculations
subsamp = unique(round(numiter+1-10.^(ie:-0.01:0))); % for subsampling
numsub = 2048; % number of subcarriers available
prefix = numsub * Tg / Ts; % number of samples in the cyclic prefix
X = zeros(1, numsub);
papr = zeros(1, numiter);

% Standard OFDM with QPSK

l=8; % oversampling factor for PSD estimation (min value = 2)
Y1 = zeros(1, l*numsub);
Y2 = zeros(1, l*numsub);
Y3 = zeros(1, l*numsub);
Y5 = zeros(1, l*numsub);
Y6 = zeros(1, l*numsub);
Y7 = zeros(1, l*numsub);
timing = zeros(1, 7);

tic;
for i=1:numiter
    d = sqrt(Psub/2) * (2*randi(2, size(S)) + 2*j*randi(2, size(S)) - 3 - 3*j); % QPSK data vector
    X(S+numsub/2) = d;
    x = numsub*ifft(ifftshift(X));
%     Y = [zeros(1, (l/2-1)*numsub/2), X, zeros(1, (l/2-1)*numsub/2)];
%     y = l*numsub*ifft(ifftshift(Y))/2;
%     y1 = [y((l*(numsub-prefix)/2+1):l*numsub/2), y, zeros(1, l*(numsub-prefix)/2)];
%     Y1 = Y1 + 4*Ts^2*abs(fft(y1)/(l*numsub)).^2/(Ts+Tg);
    papr(i) = numsub * max(abs(x).^2) / norm(x)^2;
end;
timing(1) = toc;
Y1 = Y1 / numiter;
papr = sort(papr);
semilogy(10*log10(papr), 1-(1:numiter)/numiter);
papr1 = papr(subsamp);
grid on;
hold on;

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]祁博宇.基于零向波束形成和旁瓣抑制的MIMO—OFDM系统码本设计[J].现代电子技术, 2009, 32(23):4.DOI:10.3969/j.issn.1004-373X.2009.23.025.

[2]雷妍.可见光哈特莱交换OFDM通信系统的性能研究[D].西安理工大学,2019.

 🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值