随着芯片的发展,DFT计算的硬件复杂度与其算法复杂度和数据元素取值范围相关,如何降低硬件复杂度至关重要。本文针对 DFT 矩阵分解中的问题,基于稀疏矩阵连乘拟合的思想,以最小化误差和硬件复杂度为目标,建立了 DFT 类矩阵的整数分解逼近模型,并使用蝶形分解算法、遗传算法、Feig-Winograd算法和优化搜索算法对模型进行求解,同时我们提出了两种新的"混合积分解---降维寻优"算法来拟合Kronecker积矩阵。
问题一的目标是限制乘法器的个数从而降低硬件复杂度。对此,本文采用 Cooley-
问题二的目标是限制分解矩阵中的元素实虚部的取值,对此采用了基于 Feig-Winograd 矩阵映射的算法、遗传算法、序列二次规划算法,评估了三种不同算法的误差和复杂度,三种算法的复杂度都为 0,遗传算法的精度最高,RMSE 最 小可达 0.15。
问题三的目标是保证矩阵稀疏性的同时限制元素范围,除了采用遗传算法,还提出了一种新的优化搜索算法保证分解结果的精度和复杂度。两种算法的硬件复杂度都为0**,** 遗传算法分解的矩阵RMSE可 达 0.08,优化搜索算法RMSE最 小可达 0.03。因为优化搜索算法优秀的性能和较短的训练时间,问题五选择采用此方法进行求解。
问题四的目标是分解DFT矩阵的Kronecker积,并且要同时限制分解矩阵的稀疏性和元素范围。对此,结合 Cooley-Tukey算法、Kronecker 积的运算性质、矩阵初等行变换、遗传算法这四种基本原理,本文提出两种新的"混合积分解---降维寻优法"。这两种方法都能达到RMSE最 小可达 0.05。其中,方法II的复杂度为0, 方法I的复杂度如6.4 表6 所示。
DFT矩阵分解精度RMSE可达 0.095。
最后,我们通过衡量最小误差和硬件复杂度,对提出的模型进行全面的评价:本文
的模型贴合实际,能合理解决提出的问题,计算得出的RMSE较小,能很好地拟合DFT
矩阵,部分模型复杂度较低,该模型在大规模DFT类矩阵的整数分解方面也能使用。
关键词:稀 疏矩阵,蝶形算法,遗传算法,优化搜索,混合积分解---降维寻优
1 问题重述
1.1 问 题背景
离散傅里叶变换(Discrete Fourier Transform,DFT)作为一种基本工具广泛应用于工程、科学以及数学领域。例如,通信信号处理中,常用DFT实现信号的正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)系统的时频域变换。另外,在信道估计中,也需要用到逆DFT(IDFT)和DFT以便对信道估计结果进行时域降噪。
在芯片设计中,DFT 计算的硬件复杂度与其算法复杂度和数据元素取值范围相关。算法复杂度越高、数据取值范围越大,则硬件复杂度就越大。目前在实际产品中,一般采用快速傅里叶变换(Fast Fourier Transform,FFT)算法来快速实现DFT,其利用DFT变换的各种性质,可以大幅降低DFT的计算复杂度。然而,随着无线通信技术的演进,天线阵面越来越大,通道数越来越多,通信带宽越来越大,对 FFT 的需求也越来越大,从而导致专用芯片上实现FFT的硬件开销也越大。为进一步降低芯片资源开销,一种可行的思路是将DFT矩阵分解成整数矩阵连乘的形式。
给定𝑁点的时域一维复数信号𝑤0, 𝑤1, ... , 𝑤𝑁−1,DFT 后得到的复数信号X𝑗(𝑗 = 0,1, ... , 𝑁 − 1)由下式给出(其中j 为虚数单位,下同):
𝑁−1
X𝑗 = ∑ 𝑤𝑛 ∗ 𝑒−𝑗2𝜋𝑛𝑗
𝑛=0
写成矩阵形式为:
, 𝑗 = 0,1,2, ... , 𝑁 − 1
𝐗 = 𝐅𝑁𝐱
其中x= [𝑤0 𝑤1 ⋯ 𝑤𝑁−1]T为时域信号向量,𝐗 = [X0 X1 ⋯ X𝑁−1]T为变换后的频域
|--------------|-----|-----|-----|---|-----------|----------------|
| 信号向量,𝐅𝑁为DFT矩阵,形式如下: |||||||
| 𝐅𝑁 = 1 √𝑁 | 1 1 | 1 | 1 | ⋯ | 1 | , 𝑤 = e−𝑗2𝜋 |
| 𝐅𝑁 = 1 √𝑁 | 1 1 | 𝑤 | 𝑤2 | ⋯ | 𝑤𝑁−1 | , 𝑤 = e−𝑗2𝜋 |
| 𝐅𝑁 = 1 √𝑁 | 1 | 𝑤2 | 𝑤4 | ⋯ | 𝑤2(𝑁−1) | , 𝑤 = e−𝑗2𝜋 |
| 𝐅𝑁 = 1 √𝑁 | ⋮ | ⋮ | ⋮ | ⋱ | ⋮ | , 𝑤 = e−𝑗2𝜋 |
| [ 1 𝑤𝑁−1 𝑤2(𝑁−1) ⋯ 𝑤(𝑁−1)(𝑁−1)] 由于DFT矩阵的特殊结构,存在很多方法加速傅里叶变换的计算,其中,分治的策 |||||||
略以及蝶形计算单元的优化是 DFT 性能的关键。下面分别给出用 FFT 和矩阵连乘拟合近似计算DFT的具体思路。
FFT 思路:FFT 采用蝶形运算的思想,以 radix-3 蝶形计算为例,其计算过程可以表示为:
|----|----|-----------|----|---------------|------|---|---------|---|---|-------|-----|----|---|
| X0 || 1 | 0 | 1 0 0−1 ] [ | 1 | 0 | 1 | 0 | 0 | 𝑤0 || ] | |
| X0 || 1 | 0 | 1 0 0−1 ] [ | 1 2⁄ | 0 | 1 | 0 | 0 | 𝑤0 || ] | |
| [ | X1 | ] = [ 1 | −3 | 1 0 0−1 ] [ | 1 2⁄ | 0 | ] [ 0 | 1 | 1 | ] [ | 𝑤1 | ] | |
| X2 1 −3 1 0 0 √3𝑗⁄ 0 1 −1 𝑤2 2 可以看到蝶形的设计相对于直接 DFT 矩阵乘积的形式大幅降低了复数乘法运算的 ||||||||||||| |
次数。
矩阵连乘拟合思路:DFT可以用传统的蝶形计算方法精确实现,也可以用一种矩阵乘法拟合近似获得,其核心思想是将DFT矩阵近似表达为一连串稀疏的、元素取值有限的矩阵连乘形式。
可以看到在该方案中,分解后的矩阵元素均为整数,从而降低了每个乘法器的复
杂度;另外𝐀1~𝐀4的稀疏特性可以减少乘法运算数量。可以看出,这其实是一种精度与硬件复杂度的折中方案,即损失了一定的计算精度,但是大幅降低了硬件复杂度。
在对输出信噪比要求不高的情况下可以优先考虑此类方案。
1.2 问 题提出
问题一:首先通过减少乘法器个数来降低硬件复杂度。由于仅在非零元素相乘时需
要使用乘法器,若𝐀𝑗矩阵中大部分元素均为0,则可减少乘法器的个数,因此希望𝐀𝑗为稀疏矩阵。对于𝑁 = 2𝑡, 𝑡 = 1,2,3, ...的DFT矩阵𝐅𝑁,请在满足约束1的条件下,对最优化问题(6)中的变量𝓐和𝛽进行优化,并计算最小误差( 即(6)的目标函数,下同)和方案
的硬件复杂度𝐶(由于本题中没有限定𝐀𝑗元素的取值范围,因此在计算硬件复杂度时可默认𝑞 = 16)。
问题二:讨论通过限制𝐀𝑗中元素实部和虚部取值范围的方式来减少硬件复杂度的方案。对于𝑁 = 2𝑡, 𝑡 = 1,2,3,4,5的DFT矩阵𝐅𝑁,请在满足约束2的条件下,对𝓐和𝛽进行优化,并计算最小误差和方案的硬件复杂度𝐶。
问题三:同时限制𝐀𝑗的稀疏性和取值范围。对于𝑁 = 2𝑡, 𝑡 = 1,2,3,4,5的 DFT 矩阵𝐅𝑁,请在同时满足约束 1和 2的条件下,对𝓐和𝛽进行优化,并计算最小误差和方案的硬件复杂度𝐶。
问题四:进一步研究对其它矩阵的分解方案。考虑矩阵𝐅𝑁 = 𝐅𝑁1 ⊗ 𝐅𝑁2,其中𝐅𝑁1和𝐅𝑁2分别是𝑁1和𝑁2维的DFT矩阵,⊗表示Kronecker积(注意𝐅𝑁非DFT矩阵)。当𝑁1 = 4, 𝑁2 = 8时,请在同时满足约束 1 和 2 的条件下,对𝓐和𝛽进行优化,并计算最小误差和方案的硬件复杂
问题五:在问题3的基础上加上精度的限制来研究矩阵分解方案。要求将精度限
制在0.1以内,即RMSE≤0.1。对于𝑁 = 2𝑡, 𝑡 = 1,2,3,4,5的DFT矩阵𝐅𝑁,请在同时满足约束1和 2的条件下,对𝓐和𝛽, 进行优化,并计算方案的硬件复杂度𝐶。
6.4 结 果与分析
得到两种方法的性能对比如6.4 表6 所示:
表 6 混合积分解---降维寻优法性能对比
|------------------|---------------|---------------|
| | 方 法 1 | 方 法 2 |
| RMSE | 0.0323 | 0.0589 |
| 硬 件复杂度 C | 640 | 0 |
如上表所示,两种方法都可以得到低于0.1的RMSE值。相对而言,方法1具有更高的拟合精度,但复杂度也随之增大。方法2牺牲了一定的拟合精度,但大大降低了复杂度。两种方法应根据实际工程的指标要求进行选择。
6.5 总 结与评价
6.5.1 模型优点
(1)矩阵降维处理。利用 Kronecker 积的性质,把高维矩阵分解转化为低维矩阵分解,同时在寻优的时候不必对 32 阶矩阵寻优,只需对 8 阶矩阵寻优,和问题三相比,问题四只是目标函数有所变化,寻优空间并未增大;
(2)稀疏度高。由于初等变换矩阵和对角矩阵一定是稀疏矩阵,所以从初等变换的角度出发,把矩阵逐一分解,在满足约束1的条件下适当地把一些初等矩阵合并相乘从而减少子矩阵的个数;
(3)较理想的寻优起点。先采用精确分解法得到满足约束 1 的子矩阵,再使用寻优算法求出同时满足约束1和约束2的最优解,这样会容易得到更理想的最优解;
(4)较完整的数学理论支撑。本文提出的"混积分解法"是根据DFT矩阵的特征和混积的性质进行有限步骤的矩阵分解。该分解过程有很强的规律性,论文简要总结了这些规律,并给出较详细的公式推导。该理论依据对于更高阶的 DFT 混积矩阵分解有重要的参考价值。
6.5.2 模型缺点
随着矩阵阶数的增大,DFT 矩阵经过 Cooley-Tukey 算法分解后的稀疏子矩阵的规律性可能会越复杂,DFT混积矩阵分解后的数学表达式可能也会越复杂。因此,DFT混积矩阵分解的数学表达式还有优化的空间。
7 问题五的模型建立与求解
7.1 问 题分析
问题五在问题三的基础上增加了RMSE限制,主要实现难点是如何调整稀疏矩阵元
|-----------|----------------------|--------------------------|
| 素的取值范围来满足 | R M S E 0.1 | ,并权衡硬件复杂度C。该问题的解决思路基于问题三 |
的实现算法,对取值范围P进行递增搜索,使RMSE最小。
7.5 总 结与评价
从测试性能表来看优化搜索算法在保证R M S E 的同时也使硬件复杂度降到最低,
并且优化了稀疏矩阵元素的取值范围P。优化搜索代码的缺点是需要遍历可能的复数取值,取值范围P越大需要迭代的次数就越多,训练时间相应增加很多。不过综合来看优化搜索方法是一个不错的选择。
8 总结与展望
经过建模与分析,本文较好地解决了 DFT 矩阵分解的问题,有效降低了硬件计算复杂度,对信号的波束成形具有重大意义。针对各种约束提出了不同的算法,不过拟合
精度还有提高的空间,可以优化代码继续改进。本文针对 DFT 矩阵分解作出的贡献主要包括以下几方面:
1.针对问题一给出了基于Cooley-Tukey算法的分解方法,具有极高的准确性。 2.针对问题二采用了基于Feig-Winograd矩阵映射的算法、遗传算法、序列二次规划算法进行分解,分析了各自的优劣势。
3.针对问题三采用了遗传算法,并提出了一种新的优化搜索法,在极低的复杂度下也能分解出满足题目约束的稀疏矩阵。
4.针对问题四提出了两种新的基于混合积分解-降维寻优的算法,分解出的矩阵完全符合题目条件,RMSE都达到了0.05。
5.针对问题五继续改进了优化搜索算法,在N=2、4、8、16、32的情况下全部满足
|---|----------------------|---------------------------------|
| 了 | R M S E 0.1 | 的要求,求出的稀疏矩阵复杂度都为0,极大地降低了硬件计算难度。 |
DFT矩阵分解应用广泛,难点在于保证低复杂度的情况下还要求较高的拟合精度,目前的分解方法仍比较有限,需要进一步对分解方法进行研究,改进搜索算法。
clc;clear;
%参数设置
N=32;%N维DFT矩阵
M=log2(N);%"级"的数量
FN = dftmtx(N)/sqrt(N);
E = cell(1,N);
A = cell(1,M);
%%%%%步骤一:求变换矩阵P
for i=1:N
e=zeros(N,1);
e(i)=1;
E{i}=e;
end
%蝶形倒序
sel_0=[1:N];
sel=permute(reshape(sel_0,2*ones(1,M)),M:-1:1);
sel=sel(:);
%产生蝶形变换矩阵P
P=[];
for i =1:N
P=[P,E{sel(i)}];
end
%%test
% a=[1,2,3,4,5,6,7,8].';
% c=P*a;
%%%%步骤二:求FFT蝶形因子,即待分解的矩阵A1~Ak
for i=1:M%N阶DFT矩阵需要分解成M个矩阵相乘
n=2^i;%第i个矩阵是基n-fft运算
d1=eye(n/2);
d2=[];
for j=1:n/2
d2=blkdiag(d2,exp(-1j*2*pi*(j-1)/n));
end
I=[d1,d2;
d1,-d2];
Atemp=[];
for k=1:N/n
Atemp=blkdiag(Atemp,I);
end
A{i}=Atemp;
end
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| %Initial N = 8; q = 3; W = DFT_matrix(N); P = [-4,-2,-1,0,1,2,4]; iter = 1000; disp([' N=' num2str(N) ' ']); [esti_W,min_err] = mtx_FWdecom1(W,P,iter); %calculate complexity simple_num=[0,1,-1,1j,-1j]; A1=ones(N,N); A_round=roundn(esti_W,-6); A_pos_dir=A1-ismember(A_round,simple_num); C = q * sum(sum(A_pos_dir)); function [esti_W,min_err] = mtx_FWdecom1(W,P,iter) N = size(W,1); min_err = inf; alpha = zeros(1,N/4); alpha(1) = 1; A00 = zeros(N/2,N/2); for i = 1:iter for q = 2:(length(alpha)-1) numSelect = 2; randomIndex = randperm(length(P),numSelect); randomElements = P(randomIndex); a = randomElements(1) + 1j*randomElements(2); alpha(q) = a; end A00(1,:) = 1; A00(:,1) = 1; for m = 2:N/4 for n = m:N/4 p = mod(m,N/2) + mod(n,N/2); t = mod(m,N/4) + mod(n,N/4); a = (-1)^t; b = (-1j)^p; c = alpha(mod(n*m,N/4)+1); A00(m,n) = a*b*c; A00(n,m) = A00(m,n); |