fir滤波器

发布时间:2020-08-02 01:34:20 作者:Chinayu2014
来源:网络 阅读:485
 // reference implementation of an FIR
    template <typename SampleType, typename NumericType>
    static void reference (const NumericType* firCoefficients, 
                           size_t numCoefficients,
                           const SampleType* input, 
                           SampleType* output, 
                           size_t n) noexcept
    {
        if (numCoefficients == 0)
        {//输出清零
            zeromem (output, sizeof (SampleType) * n);
            return;
        }
		//分配内存
        HeapBlock<SampleType> scratchBuffer (numCoefficients
                #if JUCE_USE_SIMD
                + (SIMDRegister<NumericType>::SIMDRegisterSize / sizeof (SampleType))
                #endif
                   );
       #if JUCE_USE_SIMD
        SampleType* buffer = reinterpret_cast<SampleType*> 
			(SIMDRegister<NumericType>::getNextSIMDAlignedPtr 
			(reinterpret_cast<NumericType*> (scratchBuffer.getData())));
       #else
        SampleType* buffer = scratchBuffer.getData();
       #endif
		//内存清零
        zeromem (buffer, sizeof (SampleType) * numCoefficients);

        for (size_t i = 0; i < n; ++i)
        {
	    //滑动,将数据向右移动一个位置
            for (size_t j = (numCoefficients - 1); j >= 1; --j)
                buffer[j] = buffer[j-1];

            buffer[0] = input[i];//最新采集的数据

            SampleType sum (0);//累加和清零
            //重新相加
            for (size_t j = 0; j < numCoefficients; ++j)
                sum += buffer[j] * firCoefficients[j];

            output[i] = sum;//更新输出
        }
    }


推荐阅读:
  1. 高通滤波器和低通滤波器
  2. Python基于FIR如何实现Hilbert滤波器求信号包络

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

fir 滤波器

上一篇:二进制、八进制、十进制、十六进制之间的相互转换

下一篇:arp欺骗防护

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》