首页 Goertzel算法(1)

Goertzel算法(1)

举报
开通vip

Goertzel算法(1)Goertzel算法实现Goertzel基本算法在每次采样后立即进行处理,在每个第N次采样进行一次音调检测。在采用FFT算法时,我们要对成块的采样进行处理,但这并不意味着必须按块来处理数据。数字处理的时间很短,因此如果每次采样都存在一次中断,那么这些数字处理完全可以在中断服务程序(ISR)内完成。或者,如果系统中存在采样缓存,那么可以持续采样,然后进行批处理。在真正运行Goertzel算法之前,必须进行下面的初步计算:1.决定采样率;2.选择块大小,即N;3.预先进行一次余弦和正弦计算;4.预先计算一个系数。这些计...

Goertzel算法(1)
Goertzel算法实现Goertzel基本算法在每次采样后立即进行处理,在每个第N次采样进行一次音调检测。在采用FFT算法时,我们要对成块的采样进行处理,但这并不意味着必须按块来处理数据。数字处理的时间很短,因此如果每次采样都存在一次中断,那么这些数字处理完全可以在中断服务程序(ISR)内完成。或者,如果系统中存在采样缓存,那么可以持续采样,然后进行批处理。在真正运行Goertzel算法之前,必须进行下面的初步计算:1.决定采样率;2.选择块大小,即N;3.预先进行一次余弦和正弦计算;4.预先计算一个系数。这些计算均可以预先完成,然后硬编码到程序中,从而节省RAM和ROM空间,也可以动态方式计算。选择合适的采样率实际上,采样率可能已经由应用本身决定了。例如,在电信应用中普遍采用8kHz的采样率,即每秒8,000个采样。又如,模数转换器(或编解码器)的工作频率可能是由一个我们无法控制的外部时钟或外部晶振决定。但如果我们可以选择采样率,那么就必须遵循奈奎斯特采样定理:采样率至少不低于最高信号频率的两倍。这是是因为如果我们要检测多个频率,那么采用更高的采样率可能会得到更好的结果。而且我们都希望采样率与每一个感兴趣的频率之间均呈整数倍关系。块大小的设置Goertzel算法中的块大小N与相应的FFT中的点数类似,它控制了频率分辨率的大小。例如,若采样率为8kHz,而N为100个采样,那么频率分辨率就是80Hz。这就可能使我们为了获取最大的频率分辨率而尽量将N取高。然而N越大,检测到每个音调所需的时间就越多,因为我们必须等所有这N个采样都完成后才能开始处理。例如,采样率为8kHz时,累积800个采样需要100ms。若想缩短检测音调的时间,就必须适当调整N的值。影响N的选择的另一个因素是采样率和目标频率之间的关系。比较理想情况是目标频率在相应的频率分辨率的中点范围内,也就是说,我们希望目标频率是sample_rate/N比值的整数倍。值得庆幸的是,Goertzel算法中的N与FFT中不同,不必是2的整数次幂。频率分辨率是指将两个相邻谱峰分开的能力。在实际应用中是指分辨两个不同频率信号的最小间隔。研究数字频谱最有效方法通常是离散傅里叶变换。频率分辨率=采样频率/采样点数 采样点数就是 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示计算DFT时取得N的大小。预计算常数在采样率和块大小确定之后,只须通过下面5个简单的计算来得出处理时所需要的常数:k=(N*target_freq)/sample_tatew=(2*π/N)*kcosine=coswsine=sinwcoeff=2*cosine每一次采样处理中都需要3个变量,我们称其为Q0'、Q1'和Q2。Q1是前一次采样处理的Q0值,Q2是在两次采样前的Q0值(或Q1在本次采样前的值)。在每个采样块的开始时,都必须将Q1和Q2初始化为0。每个采样都需要按照下面三个等式进行计算:Q0=coeff*Q1-Q2sampleQ2=Q1Q1=Q0在进行N次预采样计算之后,可以检测到音调是否存在。real=(Q1-Q2*cosine)imag=(Q2*sine)magnitude2=real2imag2这时只需进行一次简单的幅度门限测试就可以判断出是否有音调存在。之后,将Q2和Q1复位到0,开始下一个块的处理。Goertzel优化算法Goertzel优化算法比Goertzel基本算法所需的计算量小,但这是以损失相位信息为代价。在Goertzel优化算法中每个采样处理完全一样,但处理的结果与Goertzel基本算法不同。在Goertzel基本算法中,通常需要计算信号的实部和虚部,然后将实部和虚部的计算结果转换为相应的幅度平方。而在优化Goertzel算法中则不需计算实部和虚部,直接计算下式:magnitude2=Q1^2Q2^2-Q1*Q2*coeff----------------------------------------------------------------1.一个正弦波一个周期内有2次到达最大值,又称幅值;2.正弦波在任意一瞬时的值叫瞬时值;3.正弦波的有效值的概念是根据热效应定义的,就是把一个正弦波电流通过一个发热电阻,测量出电阻的热量,然后再把一个直流电通过同一个电阻,然后找出与前面测出热量相同的直流电,就是这个正弦波电流的有效值。有效值E跟最大值Em的关系是E=E/根号24.峰值的意思就是最大值的意思。5.峰-峰值的意思就是正弦波最高点和最低点的差,比如幅值5V的双级性正弦交流电的峰-峰值是5V-(-5V)也就是10V。如果是5V单级性正弦直流电压的话,峰-峰值就是5V-0V,还是5V。在进行了DFT计算后,|X(k)|表示的是某个频率w对应的波的峰值,即幅度值。一个信号由多个频率的波组成,X(k)就是这些波的频率w的函数形式,即以w为自变量,X(k)表示该频率对应波的幅值,即该波的峰值。在信号的频域描述中,以频率作为自变量,以组成信号的各个频率成分的幅值作为因变量,这样的频率函数称为幅值谱,它表征信号的幅值随频率的分布情况。X(k)=X(ejw)∣w=N2π​k​X(ejw)表示对时域的傅里叶变换,这里的w是连续的值,即表示了信号中包含的所以的频率。X(k)就表示了对上面X(ejw)所有频率w的采样,采样间隔为w=N2π​,它相当于是k的函数;w=N2π​k​,当k=1时,w=N2π​,也就表示该信号的基波的频率为w=N2π​. k=2时,w=N2π​*2,表示了信号中二次谐波的频率为w=N2π​*2.X(k)也就是DFT,式子中包含的w也就是离散的,这些离散的w就是信号中包含的各次谐波的频率。那么,取k=1就表示X(k)是基波的幅值(即基波的峰值)。K=2就表示X(k)是二次谐波的幅值。-------------------------------------------------------------------------------------------------------ARM中MIPS是什么意思?MIPS/MHZ又是什么意思?MIPS ( Million Instruction Per Second )表示每秒多少百万条指令,如 10MIPS ,表示每秒一千万条指令。MIPS/MHz 表示 CPU 在每 MHz 的运行速度下可以执行多少个 MIPS ,如 10MIPS/MHz ,表示如果 CPU 运行在 1MHz 的频率下,每秒可执行一千万条指令,如果 CPU 运行在 5MHz 的频率下,每秒可执行五千万条指令。 MIPS/MHz 可以很好的反映 CPU 的运行速度。
本文档为【Goertzel算法(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_477730
暂无简介~
格式:doc
大小:121KB
软件:Word
页数:9
分类:
上传时间:2022-08-09
浏览量:1