【FFT】专题总结

学了若干天终于学(bei)会了传说中的法法塔

感觉也没那么难用嘛

fft快速傅里叶变换 在大表课件上写就是解决高精乘的工具 其实很有理有据

fft就是用复数的折半引理优化两个多项式相乘的高端东西

他能使O(n^2)的多项式相乘优化到O(nlogn)

听ak说这也是比较模板的东西 也就不去理解什么证明了(其实是我看了半天看不懂TAT)

贴个代码吧(史上最短总结233- -)


 1 int bit_rev(int t,int n){
2 int res=0;
3 for (int i=0;i<n;i++) res|=(t>>(n-i-1)&1)<<i;
4 return res;
5 }
6 void fft(cd *a,int n,int rev){
7 int len=1<<n;
8 static cd y[N*4];
9 for (int i=0;i<len;i++) y[i]=a[bit_rev(i,n)];
10 for (int d=1;d<len;d<<=1){
11 cd wn=exp(cd(0,PI*rev/d));
12 for (int k=0;k<len;k+=(d<<1)){
13 cd w=cd(1,0);
14 for (int i=k;i<k+d;i++,w*=wn){
15 cd u=y[i],v=w*y[i+d];
16 y[i]=u+v;
17 y[i+d]=u-v;
18 }
19 }
20 }
21 if (rev==-1)
22 for (int i=0;i<len;i++) y[i]/=len;
23 for (int i=0;i<len;i++) a[i]=y[i];
24 }
25 void mul(int *a,int la,int *b,int lb,int *c,int &lc){
26 int len=1,n=0;
27 static cd t1[N*4],t2[N*4];
28 for (;len<la*2 || len<lb*2;len<<=1,++n);
29 for (int i=0;i<len;i++){
30 t1[i]=cd(i<la ? a[i] : 0,0);
31 t2[i]=cd(i<lb ? b[i] : 0,0);
32 }
33 fft(t1,n,1);
34 fft(t2,n,1);
35 for (int i=0;i<len;i++) t1[i]*=t2[i];
36 fft(t1,n,-1);
37 lc=len-1;
38 for (int i=0;i<len;i++) c[i]=(int)(t1[i].real()+0.5);
39 }

【FFT】专题总结,布布扣,bubuko.com

时间: 2024-10-25 04:32:57

【FFT】专题总结的相关文章

数字信号处理专题(3)——FFT运算初探

一.前言 FFT运算是目前最常用的信号频谱分析算法.在本科学习数字信号处理这门课时一直在想:学这些东西有啥用?公式推来推去的,有实用价值么?到了研究生后期才知道,广义上的数字信号处理无处不在:手机等各种通信设备和WIFI的物理层信号处理.摄像头内的ISP.音频信号的去噪等.各种算法中,FFT是查看信号本质,也就是频谱的重要手段.之前仅直接调用FFT/IFFT IP核,今天深入探讨下算法本身和实现方案. 二.FFT运算原理及结构 本文仅对FFT的核心思想.作用和算法结构进行介绍,FFT具体原理和公

多项式fft、ntt、fwt 总结

做了四五天的专题,但是并没有刷下多少题.可能一开始就对多项式这块十分困扰,很多细节理解不深. 最简单的形式就是直接两个多项式相乘,也就是多项式卷积,式子是$N^2$的.多项式算法的过程就是把卷积做一种变换,在变换后各系数相称得到新系数.其实这一步变换的构造过程挺深奥的,并不是很会.对于多项式卷积的变换就是点值.于是就有了快速变换这样的算法. 细节问题出过很多.边界的问题容易弄错.一般如果是两个N项多项式相乘,得到的是一个$2*N-1$项的多项式,这是存在系数的,只不过一般我们只要N项的结果,所以

【团购巨划算】韩立刚老师门徒级学习专题,只此一次的超大优惠福利

Q:韩立刚老师是谁? A:韩老师是51CTO金牌讲师(最高级别),也是微软最有价值专家MVP.微软企业护航专家.<计算机网络原理>一书作者 讲师主页:http://edu.51cto.com/lecturer/400469.html Q:门徒级学习专题是什么? A:韩立刚老师门徒级课程专题(Windows Server+网络安全+数据库) 韩老师从2013年至今,根据企业对IT运维人才的技术要求,录制视频教程49 门,时长达581小时50分钟.旨在从0起点培养企业高端IT人才,让你在企业IT部

XJTUOJ wmq的A&#215;B Problem FFT

wmq的A×B Problem 发布时间: 2017年4月9日 17:06   最后更新: 2017年4月9日 17:07   时间限制: 3000ms   内存限制: 512M 描述 这是一个非常简单的问题. wmq如今开始学习乘法了!他为了训练自己的乘法计算能力,写出了n个整数,并且对每两个数a,b都求出了它们的乘积a×b.现在他想知道,在求出的n(n−1)2个乘积中,除以给定的质数m余数为k(0≤k<m)的有多少个. 输入 第一行为测试数据的组数. 对于每组测试数据,第一行为2个正整数n,

对AM信号FFT的matlab仿真

普通调幅波AM的频谱,大信号包络检波频谱分析 u(t)=Ucm(1+macos ?t)cos ?ct ma称为调幅系数 它的频谱由载波,上下边频组成 , 包络检波中二极管截去负半周再用电容低通滤波,可以得到基带信号,那么,截去负半周后的AM信号必定包含基带信号的频谱.我们可以通过matlab来验证. %已知基带信号为1hz,载波为64hz,调制系数ma=0.3,采样频率1024hz,FFT变换区间N为2048 clear; fs=1024; f=1; %1hz基带信号 fc=64; %64hz载

c指针-专题

六---指针 内存和地址怎么理解呢? 机器中有一些位置,每一个位置被称为[字节]/byte,许多现代机器上,每个字节包含8个位.更大内存单位[字],通常包含2个或4个字节组成. 一个字包含4个字节,它的地址是什么? 他仍然只有一个地址,是最左边还是最右边的那个字节的位置,取决于机器. 机器事实-关于整型的起始位置: 在要求边界对齐(boundaryalignment)的机器上,整型存储的起始位置只能是某些特定的字节,通常是2或4的倍数. 变量名和地址关系? 所有高级语言的特性之一,就是通过名字而

无线安全专题_破解篇03--打造个人字典

上一篇讲解了如何通过Kali破解Pin码,今天继续无线安全专题破解篇的第三讲:打造个人字典.通过第一课,我们知道想要破解WPA加密,需要一个强大的字典.字典的强大直接决定了破解的可能性,废话不多说,咱们就学习一下怎么使用kali中的工具生打造个人字典.  一.crunsh工具介绍 今天主要说的是crunsh这款工具,专门用来生成字典. 命令参数: -b              #体积大小,比如-b 20mib 或者 -b 20kib -c              #密码个数(行数),比如80

多项式FFT相关模板

自己码了一个模板...有点辛苦...常数十分大,小心使用 #include <iostream> #include <stdio.h> #include <math.h> #include <string.h> #include <time.h> #include <stdlib.h> #include <algorithm> #include <vector> using namespace std; #de

最短路径算法专题1----弗洛伊德

由于最短路径算法我认为比较重要,所以分成几个专题来慢慢细化去磨它,不能一口气吃个胖子嘛. 首先在说算法之前,先说清楚什么叫做最短路径. 题目一般会给你一张图,然后告诉你很多地方,然后告诉你各个地方之间的路程有多远,要你求出,两点间的最短距离,注意,题目给出的两点间的距离未必是最短的,可能通过第三个点转换之后达到更短.实际其实也是这样的,有时候两个地方并没有直线的道路只有曲线的绕路. 算法的思路: 1.用二维数组列出所有的距离,达到不了的用最大距离表示,如9999999 2.循环数组上面的每一个点