HINT 所有数据满足:Ai<=40000 Source 应该不难看出是生成函数 我们用$A(x) = a + bx^1 + cx^2 + \dots $表示价值为$1$的方案为$a$,价值为$2$的方案为...$ 多项式乘法可以用NTT,不过模数会炸998244353 看到大佬们都用FFT A了,那我就偷个懒喽 #include #include #include<cstring...for(int i = 0; i < N; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << (L - 1)); FFT...(C, 1); FFT(A, 1); FFT(B, 1); for(int i = 0; i < N; i++) A[i] = A[i] + (A[i] *...A[i] - B[i]) / 2.0 + (A[i] * A[i] * A[i] - A[i] * B[i] * 3.0 + C[i] * 2.0) / 6.0; FFT(A, -1);
文章目录 前言 一、grc 图 二、窗函数及对应的运行结果 1、矩形窗 2、汉明窗 3、汉宁窗 4、黑曼窗 5、黑曼-哈里斯窗 6、凯泽窗 7、巴特利特窗 8、平顶窗 前言 GNU Radio 中 FFT...模块的窗函数包括以下几种:矩形窗(Rectangular Window)、汉明窗(Hamming Window)、汉宁窗(Hann Window)、黑曼窗(Blackman Window)、黑曼-哈里斯窗...一、grc 图 首先我们先创建一个简单的 grc 图,将信号源变成标签流通过限流器后再分两路,一路接给示波器1和频谱仪1,另一路通过 FFT 再进行归一化后再送给 IFFT 然后送给示波器2,我们主要考察的是使用不同窗函数所带来的信号变化...二、窗函数及对应的运行结果 1、矩形窗 特点:所有样本的权重相等。 适用场景:矩形窗在时域内保持信号不变,但由于其突然的起止点,会在频域内产生显著的旁瓣。...适用场景:因其灵活性,广泛应用于数字滤波器设计和调制应用,特别是在需要定制窗函数以满足特定主瓣宽度和旁瓣衰减需求的场合。
FFT 即快速傅立叶变换。在很多计算机领域都用用处,例如数字图像处理、计算机网络。但他在算法竞赛中主要是用于多项式和生成函数相关的题目。 多项式 表达方式 简介 系数表达式,即 。 坐标形式。...在介绍 FFT 之前,得先学习 DFT (离散傅里叶变换)算法。 DFT 由于对一个多项式的点值表达式的取是任意的,所以好的取法可能会使一个算法产生本质性的蜕变。...FFT 那么 FFT 算法是如何优化计算这一过程的?利用分治。...(a, n, 1); FFT(b, n, 1); FOR (i, 0, n) a[i] = a[i] * b[i]; FFT(a, n, -1); } 例题 A...(a,n,1); FFT(b,n,1); for (int i=0;i<n;i++) a[i]=a[i]*b[i]; FFT(a,n,-1); } int n,
裸的FFT写了1h。。...思路比较简单,直接把 \(\sum (x_i - y_i + c)^2\) 拆开 发现能提出一坨东西,然后与c有关的部分是关于C的二次函数可以直接算最优取值 剩下的要求的就是\(max (\sum x_i...y_i)\) 画画图就知道把y序列倒过来就是个裸的FFT了。...b.y}; } com operator - (const com a, const com b) { return (com) {a.x - b.x, a.y - b.y}; } void FFT...(A, lim, 1); FFT(B, lim, 1); for(int i = 0; i <= lim; i++) C[i] = A[i] * B[i]; FFT(C, lim, -1
()const{return cp(x,-y);} }w[N]; void fft(cp p[],int n){ for(int i=0,j=0;i<n;++i){ if(i>j...rep(i,0,n){ w[i]=cp(cos(2*PI*i/n),sin(2*PI*i/n)); p[i]=cp(x[i],y[i]); } fft...p[j])*h; } fft(q,n); rep(i,0,n)z[i]=q[i].x/n+0.5; } int n,m,p; ll a[N],b[N],c[N]; int main...;fft(q,n); rep(i,0,n){ int j=i?...(p,n);fft(q,n); rep(i,0,n){ int j=i?
#FFT变换是针对一组数值进行运算的,这组数的长度N必须是2的整数次幂,例如64, 128, 256等等; 数值可以是实数也可以是复数,通常我们的时域信号都是实数,因此下面都以实数为例。...我们可以把这一组实数想像成对某个连续信号按照一定取样周期进行取样而得来,如果对这组N个实数值进行FFT变换,将得到一个有N个复数的数组,我们称此复数数组为频域信号,此复数数组符合如下规律: #其结果数组有以下特点...import matplotlib import matplotlib.pyplot as plt pi = np.pi time_len = 2.0 #时长 N = 2000 #数据点数,须为偶数,FFT...np.sin(2*pi*20*t)+8*np.sin(2*pi*40*t) +14.14*np.sin(2*pi*100*t) +14.14*np.cos(2*pi*100*t)+ 16 yf = np.fft.fft...频域信号") #plt.suptitle("FFT 示例") plt.tight_layout() plt.show()
以前很喜欢用sleep和usleep函数来做定时器。确实方便啊。但是昨天在公司用这个函数写了个东西,被说这2个函数最好别在多线程里面使用。然后叫我改一个定时器方案。查看了man文档。...一个在多线程中比较好的实现是利用的pthread库里面的pthread_cond_timewait()函数来实现。下面贴出来代码。都比较基础。
——元《争报恩》 1、qsort函数使用举例 #include //qosrt函数的使⽤者得实现⼀个⽐较函数 int int_cmp(const void * p1, const...//该函数没有返回值,只是将数组进行了,排序。 那么根据上面介绍的内容,其实我们可以了解到,到底是为什么,qsort函数使用举例到底是什么意思。 在举例说明的qsort函数中。...所以,一定,一定要,记住在使用举例时的,int_cmp函数里面的内容(当然,在举例子时候,使用的是要比较int类型的) 3、qsort模拟实现 其实为了,更好的了解,理解qsort函数。...所以,先来完成比较简单的用来比较的函数 3、2、1int_cmp函数的实现 int int_cmp(const void*p1,const void*p2) { return (*(int *)...3、2、2_swap函数的实现 _swap函数是为了将不符合大小顺序的元素进行交换,那么怎么样才能交换呢? 我们可以先想想,如果是整型的时候是怎么交换的?
1 问题 调用函数add后手动输入冒号会出错 2 方法 在调用函数时只需要传入指定数量和指定类型的值在参数表的指定位置这些值将在方法启动前赋值给形参 public static void main(String
关于gotoxy函数 用法: #include 功能: 将光标移动到屏幕指定位置,用于屏幕输出 屏幕左上角定义为光标的坐标原点,横向X轴,纵向Y轴 函数原型声明: void gotoxy(int x,...int y); 注意 它并不是一个C和C++标准库函数中的函数,很多编译器中没有提供这个函数。...不过可以利用Windows提供的API函数自定义这个函数。
我在这里也不再去讲这个函数了,但需要注意的一点:实信号的频谱关于0频对称,是偶函数,如果st = cos(2pif0*t)+1; t的长度为4000,那么0频的位置在第一个点,做fftshift后,0...频的位置在低2001个点的位置,fft后的信号关于第2001个点对称,而不是4000个点左右对称。...,nfft) [pxx,f] = pwelch(x,window,noverlap,f,fs) 其中, X表示输入序列; window:当window是一个数值时,表示窗函数长度,即分段长度L,默认的窗函数为...hamming窗;当window是一个序列时,表示窗函数序列; NFFT表示FFT的点数,X为实数时,当NFFT是偶数时,Pxx的长度是(NFFT/2+1);当NFFT是奇数时,Pxx的长度是(NFFT...= fft(st); psdx = abs(st_fft(1:end/2+1)).^2/fs/N; %功率谱密度为能量谱密度除以时间,摸值的平方即为能量谱 psdx(2:end) = 2*psdx(
NumPy 和 SciPy 都有经过充分测试的封装好的FFT库,分别位于子模块 numpy.fft 和 scipy.fftpack 。...函数,我们来对结果进行仔细检查 x = np.random.random(1024) np.allclose(DFT_slow(x), np.fft.fft(x)) 输出: True 现在为了验证我们的算法有多慢...(x), np.fft.fft(x)) 输出: True 然后与“慢方法”的运行时间对比下: %timeit DFT_slow(x) %timeit FFT(x) %timeit np.fft.fft...我们实现了FFT 。 需要注意的是,我们还没做到numpy的内置FFT算法,这是意料之中的。numpy 的 fft 背后的FFTPACK算法 是以 Fortran 实现的,经过了多年的调优。...) %timeit FFT(x) %timeit FFT_vectorized(x) %timeit np.fft.fft(x) 输出: 10 loops, best of 3: 72.8 ms
这里做一下记录,关于FFT就不做介绍了,直接贴上代码,有详细注释的了: import numpy as np from scipy.fftpack import fft,ifft import matplotlib.pyplot...频率分量有180,390和600 y=7*np.sin(2*np.pi*180*x) + 2.8*np.sin(2*np.pi*390*x)+5.1*np.sin(2*np.pi*600*x) yy=fft...(y)) # 取绝对值 yf1=abs(fft(y))/len(x) #归一化处理 yf2 = yf1[range(int(len(x)/2))] #...# two sides frequency range frq1 = frq[range(int(n/2))] # one side frequency range YY = np.fft.fft...(y) # 未归一化 Y = np.fft.fft(y)/n # fft computing and normalization 归一化 Y1 = Y[range(int
问题描述 在我们想要用代码来解决问题时,可能某一种关系会多次用到,但是复制粘贴有违反了软件工程中的DRY原则,python为我们提供了函数功能,我们可以通过引用内置函数或是通过def函数来定义一个函数关系...解决方案 def的基本用法就是: def function_name(parameters): return function_name就是我们定义的函数名称,在后面调用函数的时候就会用到,parameter...是我们定义函数的参数,通过我们调用的时候传入即可。...图2.2 调用结果 通过print函数名加上自己传入参数,最后就实现了函数的运行,在任何位置都能通过此方法进行调用,可以方便不少。...结语 在进行一些大项目的编写时,def函数必然是一个很好的选择,方便我们做一些常用的内置函数以外的函数,甚至我们能通过from_import的方式来调用其他.py文件中定义的函数,非常方便。
{n=0}^{N-1}|x[n]|^2=\frac{1}{N}\sum_{k=0}^{N-1}|X[k]|^2 根据 DFT 变换的帕萨瓦尔定理,使用 1/\sqrt N 三、仿真测试 在进行 FFT...Data_inf = randi([0,1],100,1)+1i*randi([0,1],100,1); ifftData = ifft(Data_inf)*sqrt(100); fftData = fft
在这一章的学习中,做了一些函数和变量的练习。并不是直接运行脚本,而是在脚本中定义了一些函数,把他们导入到Python中通过执行函数的方式运行。...words = sort_sentence(sentence) print_first_word(words) print_last_word(words) 可以看到这个程序中只定义了函数...,并没有调用函数并打印出来。...导入函数的方法有两种:import no25 或 from no25 import * (我写的脚本名称叫no25.py) 下面是执行结果: -userdeMacBook-Air:desktop user...我在程序中第46行下面调用了一个函数print_first_words(),但是在程序里并没有定义这个函数,而是有print_first_word()这个函数,所以是手误打错了,python的错误提示"
1 前言 最近在公司维护的项目中碰到一个解决了定位很久的 bug , bug 找到的时候发现犯了很低级的错误——在中断处理函数中调用了 printf 函数,因为中断处理函数的调用了不可重入函数,导致中断丢失和系统位置错误...那什么是不可重入函数呢? 为什么中断处理函数不能直接调用不可重入函数? 怎样写可重入函数? 就以上三个问题展开小短文: 2 什么是不可重入函数?...可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入 OS 调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源...满足下列条件的函数多数是不可重入的: 函数体内使用了静态(static)的数据结构; 函数体内调用了 malloc() 或者 free() 函数; 函数体内调用了标准 I/O 函数; A....总而言之,中断处理函数做的事情越简单越好。 4 如何写出可重入的函数? 在函数体内不访问那些全局变量; 如果必须访问全局变量,记住利用互斥信号量来保护全局变量。
函数指针说白了,,,,函数的地址 现在看一个简单的--先定义一个函数指针 void (*f1)();就是这样定义--指向的是一个void类型的 假设定义了另一个 void f2(); 可以 f1 = &...也没什么难的 void (*f1)(int x); void f2(int x); 不过好像这两个的类型要一样,,,现在都是无返回值的带int型的参数的函数 再看下一个 #include<stdio.h
函数是Python内建支持的一种封装,通过把大段代码拆成函数,再一层一层的调用函数,就可把复杂任务分解成简单的任务 这种分解可以称之为面向过程的程序设计 函数就是面向过程的程序设计的基本单元 函数式编程...越是抽象的计算,离计算机硬件越远 对应到编程语言,则 越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言 越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言 关于函数的副作用... 对于纯函数,只要输入是确定的,输出就是确定的,就是一个输入只能有一种输出,这种函数称之为没有副作用 对于有些函数,它允许使用变量,由于函数内部的变量状态不确定,同样一个输入可能得到不同的输出,...这种函数称之为有副作用 关于函数式编程 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,也就是没有副作用 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数...,还允许返回一个函数 Python与函数式编程 Python对函数式编程提供部分支持 由于Python允许使用变量,因此Python不是纯函数式编程语言
*cos(2*pi*F1*t+pi*P1/180)+A2*cos(2*pi*F2*t+pi*P2/180); %显示原始信号 plot(S); title('原始信号'); figure; Y = fft...(S,N); %做FFT变换 Ayy = (abs(Y)); %取模 plot(Ayy(1:N)); %显示原始的FFT模值结果 title('FFT 模值'); figure; Ayy=Ayy/(N.../2); %换算成实际的幅度 Ayy(1)=Ayy(1)/2; F=([1:N]-1)*Fs/N; %换算成实际的频率值 plot(F(1:N/2),Ayy(1:N/2)); %显示换算后的FFT
领取专属 10元无门槛券
手把手带您无忧上云