CN114650033B - 一种基于dsp的快速滤波方法 - Google Patents
一种基于dsp的快速滤波方法 Download PDFInfo
- Publication number
- CN114650033B CN114650033B CN202111066789.7A CN202111066789A CN114650033B CN 114650033 B CN114650033 B CN 114650033B CN 202111066789 A CN202111066789 A CN 202111066789A CN 114650033 B CN114650033 B CN 114650033B
- Authority
- CN
- China
- Prior art keywords
- length
- array
- data
- filtering
- frequency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
- H03H2017/0298—DSP implementation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于DSP的快速滤波方法。属于地球物理探测技术领域。方法包括以下步骤:步骤1根据滤波参数计算滤波缓冲阵列参数;步骤2建立滤波缓冲阵列,长度为N1;步骤3将实时采集数据写入步骤2建立的阵列中;步骤4在阵列中添加随机头序列;步骤5对缓冲阵列进行快速傅里叶变换;步骤6根据滤波系数去除带外频点;步骤7对带外置零的缓冲阵列进行快速傅里叶反变换;步骤8提取时域信息。本发明解决传统滤波算法参数过多导致的运算量过大,无法应用于嵌入式算法的限制性的问题,同时去除传统滤波算法的通带内纹波,减少相应的频率失真。
Description
技术领域
本发明涉及一种快速滤波方法,特别是涉及一种用于基于DSP的快速滤波方法。属于地球物理探测技术领域。
背景技术
对于地质勘探而言,其仪器需要自身快速处理数据,且对数据进行滤波等操作,现存的滤波技术手段存在如下缺点:
1.通带内纹波较高,造成通带不平坦,引起频率失真效应;
2.传统滤波算法造成滤波系数较多,会引起运算大幅增加,进而占用系统资源,不适用于地震采集仪器嵌入式算法;
3.传统滤波算法对于频带的高频或低频截止,不能做到很高,如若做到很高,当采用FIR滤波器时,必须用非常多的系数进行拟合,如若用IIR滤波器,则会引起相位失真,对于线性相位所要求的应用所不适用;
4.对于带通滤波器,传统滤波算法实现比较困难,往往采用滤波器级联方式来实施,但如若用此方式,则会引起运算量的成倍增加。
发明内容
本发明要解决的技术问题是提供一种基于DSP的快速滤波方法,解决传统滤波算法参数过多导致的运算量过大,无法应用于嵌入式算法的限制性的问题,同时去除传统滤波算法的通带内纹波,减少相应的频率失真。且传统滤波算法的多系数拟合方法决定了滤波的高频截止或低频截止精度与拟合系数的数量正相关,从而提高截止频率的精度就会造成运算量的进一步增加。本发明采用基于DSP的快速滤波方法,在提高截止频率的精度的同时,无需增加运算量,即在大幅度减少系统资源占用的基础上,提高滤波精度。
本发明一种基于DSP的快速滤波方法,所述方法包括以下步骤:
步骤1根据滤波参数计算滤波缓冲阵列参数;
步骤2建立滤波缓冲阵列,长度为N1;
步骤3将实时采集数据写入步骤2建立的阵列中;
步骤4在阵列中添加随机头序列;
步骤5对缓冲阵列进行快速傅里叶变换;
步骤6根据滤波系数去除带外频点;
步骤7对带外置零的缓冲阵列进行快速傅里叶反变换;
步骤8提取时域信息。
本发明一种基于DSP的快速滤波方法,相比于现有技术的方案,具有以下优点:
1.通带无纹波,带内绝对平坦,
2.降低运算要求,大幅减少占用系统资源,
3.能够将频带的高频或低频截止做到很高,且不会引起运算增加或相位失真,
4.可实现带通滤波,且不会引起运算量的大幅增加。
附图说明
图1为本发明基于DSP的快速滤波方法的流程图。
具体实施方式
实施例1
如图1所示,本实施例基于DSP的快速滤波算法,基于DSP内集成的FFT和IFFT功能,完成滤波。
第一步,根据滤波参数计算滤波缓冲阵列参数:
对于带通滤波,根据FFT,对于采样率为fs的信号,设滤波缓冲阵列的计算长度为N1,则FFT变换后,频率分辨率为N1,设高通截止频率为ωp,则存在整数n,同时满足式(1)和式(2)。
由此可计算出滤波缓冲阵列的长度N1。
由于其采用DSP库运算,因此存在前序序列失真,前序序列失真长度由DSP库决定,根据不同库的类型进行查找,DSP中FFT数据头失真长度为
Nr=10...............(3)
为了消除失真对滤波算法的影响,在第二步建立的缓冲阵列前端,添加随机头序列,序列长度为Nr。
后续存入的实时数据的阵列长度为Ns,其决定于每次处理数据的大小。
第二步,建立滤波缓冲阵列,长度为N1。
建立滤波缓冲区阵列,长度为N1具体表述为在内存中开辟长度为N1的数组,接收长度为Ns的数据流,以及长度为Nr的随机阵列,并将此两类数据应用于后续的滤波运算。
Ns+Nr=N1...............(4)
第三步,将实时采集数据写入上一步建立的阵列中,
将采集到的实时数据实时添加到上述所开辟的缓冲区数据中,其起始地址为Nr,数据添加模式采用逐次递进的方式,随即判定实时数据添加的长度,如若实时数据长度小于Ns,则继续上述操作,如若数据长度等于Ns,则进入下一步操作。
第四步,在阵列中添加随机头序列。
添加随机头序列至缓冲序列中,其添加规则为计算上述所采集的长度为Ns的实时数据的平均值,而后以此平均值为中心,添加随机噪声,随机噪声为白噪声,其频率为全频段。
第五步,对缓冲阵列进行快速傅里叶变换
基于DSP库对上述长度为N1的整个序列进行快速FFT运算,运算采用硬件加速的运算规则,数据类型采用双精型。新建长度为NA的缓冲数组,用于存放运算完成后的数据输出,NA=N1。
第六步,根据滤波系数去除带外频点。
对变换后的长度为NA的数组,
对于低通滤波,设低通截止频率为ωl,则ω>ωl的频点全部置零;
对于高通滤波,设高通截止频率为ωh,则ω<ωk的频点全部置零;
对于带通滤波,设通带下限截止频率为ωl,通带上限截止频率为ωh,则ω<ωl或ω>ωh的频点全部置零。
第七步,对带外置零的缓冲阵列进行快速傅里叶反变换,
对上述运算后的数组进行基于DSP的IFFT变换,其运算采用基于硬件加速的运算规则,数据类型采用双精型,开辟新数组,运算完成后将数据存至新的缓冲数组中。
第八步,提取所关心的时域信息
对上一步运算后的缓冲数组,数据头添加的随机头序列长度为Nr,在反变换生成的阵列中,去除数据前端长度为Nr的数据,提取所需要的时域信息。
实施例2
本实施例选用STM32F745作为主控单元。其主控单元具有DSP和FPU双重功能,能满足硬件浮点加速和浮点运算库,对本实例运算的需求,具有ART加速器,一级缓存,能更快的通过总线处理数据,满足大数据迁移运算的性能需求。
第一步,根据滤波参数计算滤波缓冲阵列参数。
在运算开始前,定义滤波缓冲区。
以低通滤波为例,对于待处理的采样率fs=100的信号,设滤波缓冲阵列的计算长度为N1,低通截止频率ωp=48.5Hz,根据式(1),
代入fs=100,ωp=48.5Hz,得
由式(5)可得,n=3,N1=200,即滤波缓冲阵列的长度为N1=200。
由于DSP库运算存在前序序列失真,本实施例选用的STM32的前序序列失真长度为Nr=10。
后续存入的实时数据的阵列长度为Ns,Ns+Nr=N1。
第二步,建立滤波缓冲阵列,长度为N1。
定义全局变量DataCal,该变量为浮点型数组,数组长度定义为全局变量N1,N1为整型。将上一步计算所得的N1赋值给N1。定义全局变量Ns和Nr,Ns和Nr都为整型。将上一步计算所得的Ns和Nr的值赋给Ns和Nr。
第三步,将实时采集数据写入上一步建立的阵列中。
设置数据信号输入全局变量WInput,用于接收需要处理的数据。定义局部变量DatFull,设置为整型,用于判断数据长度是否满足要求。
将采集到的实时数据实时存入上述全局变量WInput中,起始地址为Nr,DatFull赋值为零,数据添加模式采用逐次递进的方式,每添加一个数据,DatFull自增,添加后进入判定语句,如果DatFull小于Ns,则继续添加;如果DatFull等于Ns,则进入下一步运算。
第四步,在阵列中添加随机头序列。
定义随机噪声WRand为全局变量,该变量为浮点型数组,数组长度为Nr。定义全局变量WInputAvr,该变量为浮点型,
WInputAvr=[WInput(Nr)+..+WInput(N1-1)]/Ns,
WRand的值等于WInputAvr加随机噪声。
将生成的WRand赋值给WInput,起始地址为零。
第五步,对缓冲阵列进行快速傅里叶变换。
调用DSP库中的浮点运算,对上一步建立的WInput进行快速FFT运算,其运算采用硬件加速的运算规则,数据类型采用双精型。
调用DSP库中封装的函数arm_rfft_fast_f32,该函数调用内部硬件处理器实现快速运算,其浮点运算过程由硬件完成,运算规则为:
由于该算法存在精简的空间,通过推导,其简化版公式为:
定义全局变量WOutpFft,该变量为浮点型数组,长度为Na,Na=N1,将经过FFT变换的数据存储于该数组中。
第六步,根据滤波系数去除带外频点。
可得n=3,即f>48.5Hz的部分是WOutpFft(97),WOutpFft(98),WOutpFft(99),WOutpFft(100),WOutpFft(101),WOutpFft(102),将此6个数据置零。
第七步,对带外置零的缓冲阵列进行快速傅里叶反变换。
定义全局变量WOutPut,该变量为浮点型数组,长度为Na。
对上一步处理后的数组WOutpFft进行基于DSP的IFFT变换,其运算采用基于硬件加速的运算规则,数据类型采用双精型,运算规则如下:
……
将该方程组写成矩阵的形式:
所以有
i≠j时,根据等比序列求和公式得到和为零,由此可知
所以有
则傅里叶反变换的公式为
运算完成后将数据存至WOutPut中。
第八步,提取所关心的时域信息。
由第四步,长度为N1的数组,其数据头添加的随机头序列长度为Nr,所以对反变换生成的WOutPut数组,去除数据前端长度为Nr的数据,即可提取所需要的时域信息。
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (1)
1.一种基于DSP的快速滤波方法,其特征在于:所述方法包括以下步骤:
步骤1根据滤波参数计算滤波缓冲阵列参数;
步骤2建立滤波缓冲阵列,长度为N1;
步骤3将实时采集数据写入步骤2建立的阵列中;
步骤4在阵列中添加随机头序列;
步骤5对缓冲阵列进行快速傅里叶变换;
步骤6根据滤波系数去除带外频点;
步骤7对带外置零的缓冲阵列进行快速傅里叶反变换;
步骤8提取时域信息;
所述方法步骤1具体为:
由此可计算出滤波缓冲阵列的长度N1;
DSP中FFT数据头失真长度为:
Nr=10
在缓冲阵列前端,添加随机头序列,序列长度为Nr;
后续存入的实时数据的阵列长度为Ns;
所述方法中步骤2具体为:
建立滤波缓冲区阵列,长度为N1,具体表述为在内存中开辟长度为N1的数组,接收长度为Ns的数据流,以及长度为Nr的随机阵列,并将此两类数据应用于后续的滤波运算,运算式为:
Ns+Nr=N1,
所述方法中步骤3具体为:
将采集到的实时数据实时添加到步骤2所开辟的缓冲区数据中,其起始地址为Nr,数据添加模式采用逐次递进的方式,随即判定实时数据添加的长度,如若实时数据长度小于Nr,则继续上述操作,如若数据长度等于Ns,则进入下一步操作;
所述方法中步骤4具体为:
添加随机头序列至缓冲序列中,添加规则为计算所采集的长度为Ns的实时数据的平均值,以平均值为中心,添加随机噪声,随机噪声为白噪声,频率为全频段;
所述方法中步骤5具体为:
基于DSP库对长度为N1的整个序列进行快速FFT运算,运算采用硬件加速的运算规则,数据类型采用双精型,新建长度为NA的缓冲数组,用于存放运算完成后的数据输出,NA=N1;
所述方法中步骤6具体为:
变换后的长度为NA的数组,
对于低通滤波,设低通截止频率为ωl,则ω>ωl的频点全部置零;
对于高通滤波,设高通截止频率为ωh,则ω<ωh的频点全部置零;
对于带通滤波,设通带下限截止频率为ωl,通带上限截止频率为ωh,则ω<ωl或ω>ωh的频点全部置零;
所述方法中步骤7具体为:
对运算后的数组进行基于DSP的IFFT变换,其运算采用基于硬件加速的运算规则,数据类型采用双精型,开辟新数组,运算完成后将数据存至新的缓冲数组中;
所述方法中步骤8具体为:
对步骤7运算后的缓冲数组,数据头添加的随机头序列长度为Nr,在反变换生成的阵列中,去除数据前端长度为Nr的数据,提取时域信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111066789.7A CN114650033B (zh) | 2021-09-13 | 2021-09-13 | 一种基于dsp的快速滤波方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111066789.7A CN114650033B (zh) | 2021-09-13 | 2021-09-13 | 一种基于dsp的快速滤波方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114650033A CN114650033A (zh) | 2022-06-21 |
CN114650033B true CN114650033B (zh) | 2022-11-15 |
Family
ID=81992660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111066789.7A Active CN114650033B (zh) | 2021-09-13 | 2021-09-13 | 一种基于dsp的快速滤波方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114650033B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6147491A (en) * | 1998-12-30 | 2000-11-14 | General Electric Company | MRI system with fractional decimation of acquired data using a two-dimensional fourier transformation |
CN1567807A (zh) * | 2003-07-08 | 2005-01-19 | 华为技术有限公司 | 一种频域滤波器及实现频域滤波的方法 |
CN1976224A (zh) * | 2006-12-15 | 2007-06-06 | 天津大学 | 低通连续可调滤波器和滤波方法 |
JP2009210642A (ja) * | 2008-02-29 | 2009-09-17 | Nippon Telegr & Teleph Corp <Ntt> | 音響信号フィルタとそのフィルタリング方法と、そのプログラムと記録媒体 |
CN103777237A (zh) * | 2012-10-17 | 2014-05-07 | 中国石油化工股份有限公司 | 一种基于空变加权镶边波数域滤波的地表高程平滑方法 |
WO2015060654A1 (ko) * | 2013-10-22 | 2015-04-30 | 한국전자통신연구원 | 오디오 신호의 필터 생성 방법 및 이를 위한 파라메터화 장치 |
CN105487119A (zh) * | 2014-10-08 | 2016-04-13 | 中国石油化工股份有限公司 | 一种时间域扇形滤波器及其应用 |
CN107942298A (zh) * | 2017-11-03 | 2018-04-20 | 西安电子科技大学 | 一种用户可配置参数的低速目标检测器及方法 |
CN109951174A (zh) * | 2019-04-16 | 2019-06-28 | 上海交通大学 | 一种快速傅里叶变换滤波方法 |
CN110178056A (zh) * | 2016-11-17 | 2019-08-27 | 沙特阿拉伯石油公司 | 利用小波互相关进行虚拟源去噪 |
CN111160146A (zh) * | 2019-12-16 | 2020-05-15 | 南京南瑞水利水电科技有限公司 | 基于时频转换的水电机组状态监测信号数字滤波方法、装置及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871631B (zh) * | 2019-03-01 | 2023-03-28 | 中电科技扬州宝军电子有限公司 | 基于非均匀快速傅里叶变换算法的阵列方向图综合方法 |
US11609306B2 (en) * | 2019-10-24 | 2023-03-21 | MMRFIC Technology Pvt. Ltd. | System, method and device for efficient processing of FMCW radar signals in a radar receiver |
-
2021
- 2021-09-13 CN CN202111066789.7A patent/CN114650033B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6147491A (en) * | 1998-12-30 | 2000-11-14 | General Electric Company | MRI system with fractional decimation of acquired data using a two-dimensional fourier transformation |
CN1567807A (zh) * | 2003-07-08 | 2005-01-19 | 华为技术有限公司 | 一种频域滤波器及实现频域滤波的方法 |
CN1976224A (zh) * | 2006-12-15 | 2007-06-06 | 天津大学 | 低通连续可调滤波器和滤波方法 |
JP2009210642A (ja) * | 2008-02-29 | 2009-09-17 | Nippon Telegr & Teleph Corp <Ntt> | 音響信号フィルタとそのフィルタリング方法と、そのプログラムと記録媒体 |
CN103777237A (zh) * | 2012-10-17 | 2014-05-07 | 中国石油化工股份有限公司 | 一种基于空变加权镶边波数域滤波的地表高程平滑方法 |
WO2015060654A1 (ko) * | 2013-10-22 | 2015-04-30 | 한국전자통신연구원 | 오디오 신호의 필터 생성 방법 및 이를 위한 파라메터화 장치 |
CN105487119A (zh) * | 2014-10-08 | 2016-04-13 | 中国石油化工股份有限公司 | 一种时间域扇形滤波器及其应用 |
CN110178056A (zh) * | 2016-11-17 | 2019-08-27 | 沙特阿拉伯石油公司 | 利用小波互相关进行虚拟源去噪 |
CN107942298A (zh) * | 2017-11-03 | 2018-04-20 | 西安电子科技大学 | 一种用户可配置参数的低速目标检测器及方法 |
CN109951174A (zh) * | 2019-04-16 | 2019-06-28 | 上海交通大学 | 一种快速傅里叶变换滤波方法 |
CN111160146A (zh) * | 2019-12-16 | 2020-05-15 | 南京南瑞水利水电科技有限公司 | 基于时频转换的水电机组状态监测信号数字滤波方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
"Speed control of a three phase induction motor using DSP controller and harmonic reduction using passive filter";B. R. Madhu等;《2016 IEEE 7th Power India International Conference (PIICON)》;20171026;第1-6页 * |
"相控阵超声检测中的数据采集系统的设计、仿真和实现";张晓黎;《测量与检测技术》;20100930;第32卷(第5期);第74-77页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114650033A (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109785854B (zh) | 一种经验模态分解和小波阈值去噪相结合的语音增强方法 | |
US8626810B2 (en) | Method and system for finite impulse response (FIR) digital filtering | |
CA2593183C (en) | Partitioned fast convolution in the time and frequency domain | |
WO1994001933A1 (en) | Digital filter having high accuracy and efficiency | |
CN105117196B (zh) | 一种基于FPGA的并行结构Sinc插值方法 | |
CN102055435A (zh) | 一种窄带数字滤波器 | |
CN114650033B (zh) | 一种基于dsp的快速滤波方法 | |
CN106849904A (zh) | 数字滤波设备 | |
TWI459381B (zh) | 語音增強方法 | |
CN110208755A (zh) | 一种基于fpga的动态雷达回波数字下变频系统及方法 | |
CN106972840B (zh) | 一种采样率转换方法与装置 | |
JP7267424B2 (ja) | 信号処理方法、信号処理装置、信号処理デバイスおよびコンピュータ記憶媒体 | |
JPH05505282A (ja) | デジタル・フィルターとその設計方法 | |
CN110086452B (zh) | 一种低复杂度的稀疏fir陷波滤波器的设计方法 | |
CN101997500B (zh) | 音频均衡处理系统及其方法 | |
Ming et al. | Research on Audio Signal Denoising and Simulation Processing | |
CN115662470A (zh) | 音频粒子提取方法和声浪合成方法及装置、设备、介质 | |
CN111010144B (zh) | 改进的两通道iir的qmfb设计方法 | |
Zhang et al. | Multi-Objective Optimization on Multistage Half-Band FIR Filter Design Using Simulated Annealing Algorithm | |
CN113191317B (zh) | 一种基于极点构造低通滤波器的信号包络提取方法和装置 | |
CN114217305A (zh) | 一种基于矢量运算的mtd处理方法 | |
CN110415717B (zh) | 一种基于分布式算法的信号去噪滤波方法 | |
CN110765410B (zh) | 一种缩短频谱数据处理时间的方法及系统 | |
CN2722502Y (zh) | 带双窗全相位频域数字滤波器 | |
CN117932315A (zh) | 瞬态响应工频干扰抑制方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |