精华内容
下载资源
问答
  • 二阶滤波器原理及算法程序

    万次阅读 多人点赞 2018-05-11 17:08:25
    滤波器的作用是允许某些频率的正弦信号基本无衰减的...二阶滤波器表示的是滤波器时域表达式中最高含有二阶微分,或者说传递函数分母的s最高次数为2。滤波器对直流分量的增益为1。据此可设零状态二阶通用滤波器的传...

    滤波器的作用是允许某些频率的正弦信号基本无衰减的通过(增益为 1,频域 0dB),同时对另外某些频率的正弦信号起到衰减作用(增益在 0.707 以下,频域-3dB 以下)。 当然,滤波器对通过的正弦信号会产生一定的相移作用。

    1.二阶通用滤波器

    二阶滤波器表示的是滤波器时域表达式中最高含有二阶微分,或者说传递函数分母的s最高次数为2。滤波器对直流分量的增益为1。据此可设零状态二阶通用滤波器的传递函数为

    时域表达式为

    待定参数为a,b,c,d,e。

    y(t)——输出信号,x(t)——输入信号。
    现要将时域微分方程转换成对应离散域差分方程,假设采样周期为Ts。

    根据微分的定义,有

    由以上分析可知,Ts越小时,上述约等式越精确。
    将连续量t分段,令t=kTs,k=0,1,2⋯,则微分方程可化为近似离散形式

    将上述表达式代入到时域微分方程中,当Ts足够小时,近似认为

    整理后得

    进一步简化得

    k1 ⋯ k5对应式⑧相应的系数,且满足

    略去 Ts, 将时域离散信号转变成序列信号, 成为计算机能够运算的式子:

    根据式⑩, 可以很容易写出二阶通用滤波器的运算程序。

    2.二阶派生出的特殊滤波器

    通过配置二阶通用滤波器的系数 a, b, c, d, e,可以生成多种特殊用途的滤波器:

    根据所需滤波器的指标(截止频率、通带频率、阻带频率等), 可以求出其传递函数的系数, 进一步推出通用型中的参数 abcde,再结合采样周期 Ts, 则可以算出数字滤波器的系数 k1/k2/k3/k4。
    对于更高阶的滤波器, 可以根据要求, 对二阶滤波器进行串联组合(有些电机驱动器程序就是如此处理)。 例如, 要求一个高阶滤波器中含有低通环节、 带阻环节和超前滞后环节, 则可以先构造三个对应的二阶滤波器, 然后在运算中进行串行运算。

    以上内容说明了对于二阶滤波器, 如何从模拟滤波器模型推出数字滤波器的计算程序。 对于整体的高阶滤波器(即非二阶组合型),上述方法过于繁琐,计算量大,则需要采用数字滤波中 IIR 和 FIR 滤波器设计方法,计算各差分量的系数, 请参考《信号与系统》教材。 建议采用 Matlab 中的 FDATOOL 进行滤波器设计, 直接生成 z 域系统方程的参数,非常方便。

    参考程序:

    typedef struct SecOrdFilter{
    float k1;
    float k2;
    float k3;
    float k4;
    float k5;
    float xin;
    float x1;
    float x2;
    float yout;
    float y1;
    float y2;
    } vector;
    
    #define SecondOrderFilter(v)    \                   // 后面将vector赋值给v
    yout = v.k1*v.xin + v.k2*v.x1+v.k3*v.x2+ v.k4*v.y1 + v.k5*v.y2;  \
    v.x2 = v.x1;     \
    v.x1 = v.xin;    \
    v.y2 = v.y1;     \
    v.y1 = v.yout; 

     

    展开全文
  • 二阶滤波器参数计算

    2012-12-07 19:55:21
    二阶滤波器参数设计 二阶滤波器参数设计 二阶滤波器参数设计 二阶滤波器参数设计
  • 二阶滤波器计算工具

    2018-08-23 14:45:40
    二阶滤波器计算设计的小工具,可以使用,计算电容值、计算频率等功能,挺全的,挺好用的
  • 最近想从嵌入式平台上用C语言实现二阶滤波器,于是先从Matlab上验证二阶滤波器公式,再编写C语言来验证。 算法移植(实现过程) ①先用Matlab自带公式的二阶滤波器实现; ②运用公式Matlab实现; ③移植到嵌入式...

    最近想从嵌入式平台上用C语言实现二阶滤波器,于是先从Matlab上验证二阶滤波器公式,再编写C语言来验证。

    算法移植(实现过程)

    ①先用Matlab自带公式的二阶滤波器实现;

    ②运用公式Matlab实现;

    ③移植到嵌入式平台上实现(C语言实现)。

    以下在Matlab软件上先进行了第①步和第②步的验证。

    生成了1个200Hz和2000Hz叠加的正弦波,然后通过1000Hz的低通滤波器,这样就滤掉了2000Hz的信号,保留200Hz的信号。

    因滤波器过后会有相位差(延时),所以下图“蓝色信号”,较原信号有延迟。

    等C语言的运算验证完成后继续更新。

    以下代码在Matlab 2016a上运行可直接实现。

    clc;clf;
    %% 系统参数
    t = 0:1/48000:0.02;         %48kFs下,时长0.02秒
    FS=48000;
    Stop_FS=1000;               %截止频率1000Hz
    %% 源数据
    x1 = sin(2*pi*t*100);           %% 100Hz
    x2 = 0.2*sin(2*pi*t*2000);      %% 2000Hz
    y = x1+x2;
    subplot(2,1,1);
    plot(x1,'r')
    hold on
    plot(x2,'b')
    hold on
    plot(y,'*')
    legend('原信号一','原信号二','原信号叠加');
    %% 滤波器系数生成
    paramter=(Stop_FS/FS)*2;
    Wn=paramter;
     [bPara, aPara] = butter(2,Wn,'low');
    %% 滤波(Matlab函数)
    Res = filter(bPara, aPara, y);
    subplot(2,1,2)
    plot(y,'k');
    hold on
    plot(Res,'r');
    %% 滤波(运用公式)
    %a(1)*y(n)= b(1)*x(n) + b(2)*x(n-1) + b3*x(n-2) - a(2)*y(n-1) - a(3)*y(n-2)
    %y(n)= [b(1)*x(n) + b(2)*x(n-1) + b3*x(n-2) - a(2)*y(n-1) - a(3)*y(n-2)]/a(1)
    xMem = zeros(2,1);
    yMem = zeros(2,1);
    yLenght = length(y);
    y2 = zeros(yLenght,1);
    for i=1:yLenght
        y2(i) = bPara(1)*y(i) + bPara(2)*xMem(2) + bPara(3)*xMem(1) - aPara(2)*yMem(2) - aPara(3)*yMem(1);
        %备份X和Y Memery
        xMem(1) = xMem(2);
        xMem(2) = y(i);    
        yMem(2) = y2(i);
        yMem(1) = yMem(2);
    end
    hold on
    plot(y2,'b');
    
    legend('原信号','原信号用MATLAB函数滤波','原信号用公式滤波');
    

    本人新建了个QQ群,如想进一步沟通可添加:947187213。

    展开全文
  • 用于无线接收机的有源RC可重构低通多相双二阶滤波器
  • 二阶滤波器

    万次阅读 2017-03-14 15:32:42
    二阶滤波器说明 补充说明和一些建议 三种滤波器类型的计算过程系数如何使用 Direct Form I 的计算过程 Direct Form II 的计算过程 Transposed direct forms 附录英文原文 第一个链接来源的英文原文 第二个链接来源...

    前言

    本文翻译自这个博客:
    http://www.earlevel.com/main/2003/02/28/biquads/
    和 wiki:
    https://en.wikipedia.org/wiki/Digital_biquad_filter
    (英文原文附在最后面)

    双二阶滤波器说明

    双二阶滤波器(biquad)是最常用的滤波器之一。双二阶滤波器是双二阶(两个极点和两个零点)的IIR滤波器。考虑到更高阶数的滤波器对系数敏感,双二阶可以单独使用,或者在更复杂的滤波器中作为基本的构建单元。例如,一个双二阶低通滤波器有12dB/octave斜度的截止频点,可以用于音调控制;如果需要一个24dB/octave的斜度,可以级联两个双二阶滤波器,这个结构比一个单4阶滤波器对参数更不敏感。

    双二阶滤波器有几种不同的结构。最直观也最直接的实现是用一个二阶差分方程( (y[n] = a0*x[n] + a1*x[n-1] + a2*x[n-2] – b1*y[n-1] – b2*y[n-2])),称之为Direct Form I:
    这里写图片描述 Direct Form I

    在定点(没有浮点数)处理器中,Direct Form I是最好实现的,因为只有一个加法点(定点DSP一般都有扩展的累加器,可以在运算中有一定的溢出)。

    我们可以把Direct Form I在加法那个点分成两部分,如下图:
    这里写图片描述

    然后,我们把分开的两部分交换顺序,让反馈的部分(极点)先计算:
    这里写图片描述

    可以看到,上图中成对的Z延时是有冗余的,剔除冗余后得到Direct Form II:
    这里写图片描述 Direct Form II

    Direct Form II更适合浮点处理器,节省了存储空间,并且浮点处理器不会有溢出问题(不像定点处理器有溢出问题)。我们可以通过转置来进一步改进Direct Form II. 把信号的流向前后颠倒,输出变成输入,分支节点变成加法,加法变成分支节点。通过转置,滤波器的特征不变,并且,转置后更有利于用浮点来计算。当相加的两个数比较临近时,浮点数会有更高的精度(把很小的数加到一个很大的数上,精度会比两个相近的数相加有更低的精度)。下图是转置后的Direct Form II( Transposed Direct Form II):
    这里写图片描述 Transposed direct form II

    补充说明和一些建议

    总结,direct form I更适合定点计算,转置(transposed) Direct form II更适合浮点计算。

    量化误差,在低频情况下,容易导致双二阶滤波器更脆弱(不稳定),主要是因为反馈系数(b1和b2)以及中间值(the delay memory)。精度不够,会导致不容易精确控制极点的位置,尤其在极点靠近单位圆的情况下,因此,量化误差会变成一个重要问题。第二个问题,是关于中间值的,相乘之后会产生更多的位,当保存下来时,需要做截断处理。这个误差反馈回滤波器系统,可能导致系统不稳定。32位浮点数对于音频滤波器来讲一般是足够好了。但是,对于很低频率(如控制类信号的滤波)和高采样率情况下,可能需要双精度才行。

    对于定点实现的滤波器,24位的系数和中间存储,基本上可以很好的满足需要了,但是48k采样率下从300Hz往下(或者96k采样率下从600Hz往下),就开始变得不稳定了。定点处理器上实现双精度开销很大,幸好,有一个简单的方法可以提高稳定度。看看Direct Form I的结构图,把高精度的累加结果保存在低精度的中间存储器中,这个过程会造成精度损失。把精度损失(量化损失:高精度计算结果与低精度存储之间的差值)加回到下一次输出结果的计算中,近似达到双精度,当然,会增加一些运算量。这个技巧被称为First Order Noise Shaping. 有更高阶的Noise Shapers,但是First Order已经足够好了,可以应付所有音频需要,即使在高采样率的情况下。
    这里写图片描述Direct Form I with first-order noise shaping

    没有双精度的系数和计算,仅仅用16位定点,通常情况下,是不适合用于处理音频的。

    最后,双二阶滤波器仅仅是DSP工具之一,它也不全是最好的滤波器。还有其它的滤波器没有低频敏感问题的(通常,双二阶滤波器对于高频是有比较好精度的,对于低频则不太好;有其它类型的滤波器,精度的分布更均匀,或者可以牺牲部分高频的精度来换取低频的精度)。然而,双二阶滤波器很通用和普遍,设计工具也很充足,所以,双二阶滤波器会是首选,除非有明确的原因需要用其它类型的滤波器。

    有太多滤波器类型了,另外一个对synthesizer来说很经常使用的是state variable filter。对于低频有很好的性能,对于高频有一些需要绕过的限制,但是,最重要的是频率和Q系数是分开的,且很容易改变。它也构成了低频sine波产生器。

    三种滤波器类型的计算过程(系数如何使用)

    归一化公式如下:

    H(z)=b0+b1z1+b2z21+a1z1+a2z2

    系数为 b0, b1and b2a1, a2

    Direct Form I 的计算过程

    y[n]=b0x[n]+b1x[n1]+b2x[n2]a1y[n1]a2y[n2]

    Direct Form II 的计算过程

    y[n]=b0w[n]+b1w[n1]+b2w[n2]

    where
    w[n]=x[n]a1w[n1]a2w[n2]

    Transposed direct forms

    y[n]=b0x[n]+s1[n1]

    where
    s1[n]=s2[n1]+b1x[n]a1y[n]

    and
    s2[n]=b2x[n]a2y[n]

    附录:英文原文

    第一个链接来源的英文原文

    One of the most-used filter forms is the biquad. A biquad is a second order (two poles and two zeros) IIR filter. It is high enough order to be useful on its own, and—because of coefficient sensitivities in higher order filters—the biquad is often used as the basic building block for more complex filters. For instance, a biquad lowpass filter has a cutoff slope of 12 dB/octave, useful for tone controls; if you need a 24 dB/octave slope, you can cascade two biquads, and it will have less coefficient-sensitivity problems than a single fourth-order design.

    Biquads come in several forms. The most obvious, a direct implementation of the second order difference equation (y[n] = a0*x[n] + a1*x[n-1] + a2*x[n-2] – b1*y[n-1] – b2*y[n-2]), called direct form I:

    这里写图片描述 Direct form I

    Direct form I is the best choice for implementation in a fixed point processor because it has a single summation point (fixed point DSPs usually have an extended accumulator that allows for intermediate overflows).

    We can take direct form I and split it at the summation point like this:

    这里写图片描述

    We then take the two halves and swap them, so that the feedback half (the poles) comes first:

    这里写图片描述

    Now, notice that one pair of the z delays is redundant, storing the same information as the other. So, we can merge the two pairs, yielding the direct form II configuration:

    这里写图片描述Direct form II

    In floating point, direct form II is better because it saves two memory locations, and floating point is not sensitive to overflow in the way fixed point math is. We can improve this a little by transposing the filter. To transpose a filter, reverse the signal flow direction—output becomes input, distribution nodes become summers, and summers become nodes. The characteristics of the filter are unchanged, but in this case it happens that the floating point characteristics are a little better. Floating point has better accuracy when intermediate sums are with closer values (adding small numbers to large number in floating point is less precise than with similar values). Here is the transposed direct form II:

    这里写图片描述 Transposed direct form II

    Notes and recommendations

    Again, direct form I is usually the best choice for fixed point, and transposed direct form II for floating point.

    At low frequency settings, biquads are more susceptible to quantization error, mainly from the feedback coefficients (b1 and b2) and the delay memory. Lack of resolution in the coefficients makes precise positioning of the poles difficult, which is particularly a problem when the poles are positioned near the unit circle. The second problem, delay memory, is because multiplication generates more bits, and the bits are truncated when stored to memory. This quantization error is fed back in the filter, causing instability. 32-bit floating point is usually good enough for audio filters, but you may need to use double precision, especially at very low frequencies (for control filtering) and at high sample rates.

    For fixed point filters, 24-bit coefficients and memory work well for most filters, but start to become unstable below about 300 Hz at 48 kHz sample rate (or twice that at 96 kHz). Double precision is always costly on a fixed point processor, but fortunately there is a simple technique for improving stability. Looking at the direct form I drawing, the quantization occurs when the higher precision accumulator is stored in the lower precision delay memory on the right side. By taking the quantization error (the difference between the full accumulated value and its value after storing it to memory) and adding it back in for the next sample calculation, the filter performs nearly as well as using full double precision calculations, but at a much lower computational cost. This technique is called first order noise shaping. There are higher order noise shapers, but this one works well enough to handle almost all audio needs, even at high sample rates.

    这里写图片描述Direct form I with first-order noise shaping

    In general, 16-bit fixed point processing is not suitable for audio without double precision coefficients and computation.

    Finally, biquads are just one of a DSP programmers tools—they aren’t always the best filter form. There are other filters that don’t share the biquad’s low-frequency sensitivities (in general, biquad coefficient precision is very good at high frequencies, and poor at low ones; there are other filter forms that spread the precision out more evenly, or trade off reduced high frequency performance for better low frequency performance). However, biquads are well known and design tools are plentiful, so they are usually the first choice for an IIR filter unless you find a reason to use another.

    There are too many filter forms to cover, but one other filter form that is popular for synthesizers is the state variable filter. It has very excellent low frequency performance, and limitations in the high frequencies that have to be worked around, but most importantly frequency and Q coefficients are separate and easy to change for dynamic filtering. It also make a great low frequency sine wave generator.

    第二个链接来源的英文原文

    In signal processing, a digital biquad filter is a second-order recursive linear filter, containing two poles and two zeros. “Biquad” is an abbreviation of “biquadratic”, which refers to the fact that in the Z domain, its transfer function is the ratio of two quadratic functions:

    H(z)=b0+b1z1+b2z2a0+a1z1+a2z2

    The coefficients are often normalized such that a0 = 1:

    H(z)=b0+b1z1+b2z21+a1z1+a2z2

    High-order IIR filters can be highly sensitive to quantization of their coefficients, and can easily become unstable. This is much less of a problem with first and second-order filters; therefore, higher-order filters are typically implemented as serially-cascaded biquad sections (and a first-order filter if necessary). The two poles of the biquad filter must be inside the unit circle for it to be stable. In general, this is true for all filters i.e. all poles must be inside the unit circle for the filter to be stable.

    Implementation
    Direct form 1

    The most straightforward implementation is the direct form 1, which has the following difference equation:

    y[n]=1a0(b0x[n]+b1x[n1]+b2x[n2]a1y[n1]a2y[n2])

    or, if normalized:

    y[n]=b0x[n]+b1x[n1]+b2x[n2]a1y[n1]a2y[n2]

    Here the b0, b1and b2coefficients determine zeros, and a1, a2 determine the position of the poles.

    Flow graph of biquad filter in direct form 1:
    这里写图片描述

    Biquad filter DF-I.svg
    Direct form 2

    The direct form 1 implementation requires four delay registers. An equivalent circuit is the direct form 2 implementation, which requires only two delay registers:

    这里写图片描述

    The direct form 2 implementation is called the canonical form, because it uses the minimal amount of delays, adders and multipliers, yielding in the same transfer function as the direct form 1 implementation. The difference equations for direct form 2 are:

    y[n]=b0w[n]+b1w[n1]+b2w[n2]

    where

    w[n]=x[n]a1w[n1]a2w[n2]

    Transposed direct forms

    Each of the two direct forms may be transposed by reversing the flow graph without altering the transfer function. Branch points are changed to summers and summers are changed to branch points.[1] These provide modified implementations that accomplish the same transfer function which can be mathematically significant in a real-world implementation where precision may be lost in state storage.

    The difference equations for Transposed Direct Form 2 are:

    y[n]=b0x[n]+s1[n1]

    where

    s1[n]=s2[n1]+b1x[n]a1y[n]

    and

    s2[n]=b2x[n]a2y[n]
    展开全文
  • UAF42是一个集成化的二阶滤波器,可以用来设计复杂的滤波器。本文介绍了如何基于UAF42设计一个高性能的50Hz陷波器,并使用免费的仿真软件TINA对这个电路进行了仿真分析,供工程师参考和学习。
  • EQ、双二阶滤波器设计

    千次阅读 2019-05-28 12:02:52
    EQ、双二阶滤波器设计0528 0528 看这篇即可。链接: 音频EQ系数的生成

    1. EQ

    看这篇即可。链接: 音频EQ系数的生成

    • 双线性变换

    1.1 高通/低通 巴特 滤波器的Q值对滤波的影响

    2. Phase correction eq(相位修正滤波器)

    3. 立体声相位调整

    3.1 立体声相关知识

    1. https://wenku.baidu.com/view/772bfe1652d380eb62946d43.html
    2. 单声道音频播放出立体声效果
    3. 音频单声道变双声道 代码
    4. 理解音频相位
    5. 相位曲线
    展开全文
  • 二阶滤波器 本文中的例子和代码放在Github First,什么是双二阶滤波器?wiki上是这么说的:二阶、递归、线性,含有两个极点和两个零点,“双二阶”的名字来源于它的传递函数是两个二次多项式的比值。 In signal ...
  • 简单二阶滤波器截止频率的计算

    万次阅读 多人点赞 2018-07-25 00:04:04
    废话不多说,先从一阶滤波器讲起。 一阶低通滤波器: 这个电路我想大家都非常的了解,但我还是将公式推导一下 由输入电压Vi是电阻电压和电容电压的和,输出电压Vo是电容电压,所以 令Wo=1/RC 所以...
  • 在本文中,我们将查看二阶滤波器的奈奎斯特图。二阶过滤器当我说“二阶”滤波器时,我指的是使用电感 - 电容(LC)谐振或放大器的滤波器,以产生真正的二阶传递函数。您可以通过级联两个一阶无源滤波器来实现两极频率...
  • 采用二阶低通滤波器对起伏的透射率信号分析,得到消光起伏频谱实验数据,并利用改进的Chahine循环方法计算得到颗粒的粒径分布和浓度信息。重点讨论高浓度情况,包括对特征函数频率响应的修正和对其阶高修正两个方面,...
  • 接着它被用在国家半导体公司开发的LMF100中,并成为大多数复杂开关电容滤波器的基本结构。美信公司色推出一款MF10和一款具有改进性能、檠电源供电及其他一些特性的下一代双路滤波器构建模块——MAX7490/7491系列。 ...
  • 同事拿着我的文章,对照着代码里的二阶滤波,表示完全看不懂,我说不可能,二阶不过是一阶的升级版,思路应是一样的,他说不信你看。 我一看,WTF,这系数怎么来的?经验公式? 这迭代怎么这种形式?没见过呀! 行...
  • 两抽头自适应LMS FIR滤波器的VHDL程序,具有两个系数f0,f1,步长u=0.25的二阶滤波器 程序正文: LIBRARY LPM; USE LPM.LPM_COMPONENTS.ALL; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH....
  • C浮点实现二阶IIR滤波器,双二阶,六阶结构
  • 电流模式滤波器相比电压模式滤波器,具有电路结构简单、功耗低、工作电压低、线性度好等优点而成为热门课题。但由于CCⅡ只有单端输出,因此,在设计滤波器中存在两个不足:  (1)电流信号直通和信号反馈不能兼顾,...
  • 一、数字滤波器 学习资料:https://zhuanlan.zhihu.com/p/58117237 作者:嗷大喵 链接:https://zhuanlan.zhihu.com/p/96683925 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处...
  • 电流模式滤波器相比电压模式滤波器,具有电路结构简单、功耗低、工作电压低、线性度好等优点而成为热门课题。但由于CCⅡ只有单端输出,因此,在设计滤波器中存在两个不足:  (1)电流信号直通和信号反馈不能兼顾,...
  • 二阶有源滤波器设计

    万次阅读 多人点赞 2018-10-31 17:21:31
    为什么要用有源二阶滤波器? (1)从有源来说 对于无源二阶低通滤波器: 其幅頻方程为: 我们从中可以看出其通带截止频率为 有其品质因子为0.372。 我们根据上图得到二阶无源低通滤波器的品质因子只有0....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 819
精华内容 327
关键字:

二阶滤波器