⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 papiclock.m

📁 快速傅立叶变换方法实现快速卷积
💻 M
字号:
clc;clear;close all;
% Simple script that uses PAPI FOR MATLAB to determine the flops of FFT for
% real vectors, FFT for complex vectors, IFFT for complex vectors
%

% FFT and IFFT flops
%--------------------------------------------------------------------------
Lmax    = 2048;
Lmin    = 1;

volte   = 5;

FFTrv   = zeros(Lmax,volte);
FFTiv   = zeros(Lmax,volte);
IFFTiv  = zeros(Lmax,volte);

for L=Lmin:Lmax
    disp('Current length');
    disp(L);
    % vectors initialization
    a = rand(L,1);
    b = rand(L,1)+i*rand(L,1);

    for ii=1:volte
        % FFT real vector
        flops(0);
        fft(a);
        ops           = flops;
        FFTrv(L,ii)   = ops;
    end
    for ii=1:volte
        % FFT complex vector
        flops(0);
        fft(b);
        ops           = flops;
        FFTiv(L,ii)   = ops;
    end
    for ii=1:volte
        % IFFT complex vector
        flops(0);
        ifft(b);
        ops           = flops;
        IFFTiv(L,ii)  = ops;
    end
end
% Flops of complex sum and product
%--------------------------------------------------------------------------
dimx = 100;
dimy = 100;
a    = rand(dimx,dimy)+i*rand(dimx,dimy);
b    = rand(dimx,dimy)+i*rand(dimx,dimy);

flops(0);
a.*b;
ops               = flops;
complexproductops = ops/(dimx*dimy);


flops(0);
a+b;
ops               = flops;
complexsumops     = ops/(dimx*dimy);
% Some other tests
%--------------------------------------------------------------------------
L1           = 500;
a1           = rand(L1,1);
b1           = rand(L1,1)+i*rand(L1,1);
L2           = 800;
a2           = rand(L2,1);
b2           = rand(L2,1)+i*rand(L2,1);

myvector     = zeros(200,1);

ii=1;
% fft di reale con altri
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
% fft di complesso con altri
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
% ifft di complesso con altri
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
%--------------------------------------------------------------------------
save papifftexecutiontimes FFTrv FFTiv IFFTiv complexproductops complexsumops myvector

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -