⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 firfilterimplementation.java

📁 this code for digital nurual network program in java
💻 JAVA
字号:
public class FIRFilterImplementation {

    public static final int LP = 1;
    public static final int BP = 2;
    public static final int HP = 3;
    static int taps = 35;
    float[] a = new float[taps];
    int filterType;

    public void setFilterType(int ft) {
        filterType = ft;
    }

    public float[] filter(float[] ip) {

        int nSamples = ip.length;
        float[] x = new float[taps];
        float[] op = new float[nSamples];
        float y;

        switch (filterType) {
            case LP:
                // 34th order Kaiser LP filter
                // 0 - 1 kHz passband, 8k samples/s
                a[0]  = a[34] = -2.127012E-4f;
                a[1]  = a[33] = -1.434315E-3f;
                a[2]  = a[32] = -1.523899E-3f;
                a[3]  = a[31] =  1.523594E-3f;
                a[4]  = a[30] =  5.469842E-3f;
                a[5]  = a[29] =  3.952406E-3f;
                a[6]  = a[28] = -5.506853E-3f;
                a[7]  = a[27] = -1.396630E-2f;
                a[8]  = a[26] = -7.244833E-3f;
                a[9]  = a[25] =  1.517910E-2f;
                a[10] = a[24] =  3.026919E-2f;
                a[11] = a[23] =  1.068386E-2f;
                a[12] = a[22] = -3.844119E-2f;
                a[13] = a[21] = -6.620962E-2f;
                a[14] = a[20] = -1.330611E-2f;
                a[15] = a[19] =  1.260324E-1f;
                a[16] = a[18] =  2.799168E-1f;
                a[17] =          3.470214E-1f;
                break;

            case BP:
                // 34th order Kaiser BP filter
                // 1 kHz centre frequency, 8k samples/s
                a[0]  = a[34] = -6.238957E-3f;
                a[1]  = a[33] =  0.0f;
                a[2]  = a[32] =  1.389077E-3f;
                a[3]  = a[31] = -7.818848E-3f;
                a[4]  = a[30] = -2.251760E-2f;
                a[5]  = a[29] = -2.874291E-2f;
                a[6]  = a[28] = -1.432263E-2f;
                a[7]  = a[27] =  1.935535E-2f;
                a[8]  = a[26] =  5.417910E-2f;
                a[9]  = a[25] =  6.508222E-2f;
                a[10] = a[24] =  3.747954E-2f;
                a[11] = a[23] = -1.967865E-2f;
                a[12] = a[22] = -7.569528E-2f;
                a[13] = a[21] = -9.558527E-2f;
                a[14] = a[20] = -6.276540E-2f;
                a[15] = a[19] =  8.218622E-3f;
                a[16] = a[18] =  7.842754E-2f;
                a[17] =          1.074919E-1f;
                break;

            case HP:
                // 34th order Kaiser HP filter
                // 2 - 4 kHz passband, 8k samples/s
                a[0]  = a[34] = -3.671040E-4f;
                a[1]  = a[33] = -1.433603E-3f;
                a[2]  = a[32] = -2.698704E-4f;
                a[3]  = a[31] =  3.431724E-3f;
                a[4]  = a[30] =  3.629797E-3f;
                a[5]  = a[29] = -3.950445E-3f;
                a[6]  = a[28] = -1.020383E-2f;
                a[7]  = a[27] = -1.033758E-3f;
                a[8]  = a[26] =  1.707373E-2f;
                a[9]  = a[25] =  1.517157E-2f;
                a[10] = a[24] = -1.685950E-2f;
                a[11] = a[23] = -3.861338E-2f;
                a[12] = a[22] = -1.937564E-3f;
                a[13] = a[21] =  6.617677E-2f;
                a[14] = a[20] =  5.988269E-2f;
                a[15] = a[19] = -8.870710E-2f;
                a[16] = a[18] = -3.004827E-1f;
                a[17] =          5.962756E-1f;
                break;
        }

        for (int k=1; k<taps; k++)
            x[k] = 0.0f;

        for (int i=0; i<nSamples; i++) {
            x[0] = ip[i];
            y = 0.0f;
            for (int k=0; k<taps; k++)
                y += a[k]*x[k];
            op[i] = y;
            for(int k=taps-1; k>0; k--)
                x[k] = x[k-1];
        }

        return op;
    }
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -