如何找到循环下FFT乘法的Big-O表示法

How to find Big-O notation of FFT multiplication under a loop

本文关键字:Big-O 表示 FFT 何找 循环      更新时间:2023-10-16

FFT乘法的Big-O表示法是O(nlogn)。在下面的算法中,循环下FFT乘法的Big-O表示法是什么?代码在matlab中给出,FFTmulti是两个多项式的FFT乘法函数

rG=1;
rN=1;
AreaFunc=[1 2 5 2 3 6 7 2 4 5 6];
N=length(AreaFunc);
for i=1:(N-1)
    ref_coeff(i) = (AreaFunc(i+1) - AreaFunc(i)) / (AreaFunc(i+1) + AreaFunc(i));
end
ref_coeff=[ref_coeff rN];
G = (1 + rG) / 2;
A0 = [1]; B0 = [-rG];
for i = 1 : length(ref_coeff)
    G = G * (1 + ref_coeff(i));
    A1 = [-ref_coeff(i) 0]; B1 = [1 0];
    An = [0 A0] + FFTmulti(A1,B0);
    Bn = [0 -ref_coeff(i)*A0] + FFTmulti(B1,B0);
    A0=An;
    B0=Bn;
end
A0 =fliplr(A0);
num = zeros(1, (floor(N/2)));
num = [num G];

FFT复杂度-对于最著名的优化算法-为N*log2(N)。

如果你在N的循环中调用它,它将是N^2 log2(N)。