Home
Products
Applications
Data Acquisition
Case Studies
Control
DSP
Software Techniques
Integrated Systems
Documents
Support
Contact Us
Company
Search
|
Butterworth Frequency Response, FIRFILTER Implementation
(Return to the Multi-Channel Filtering main page.)
A FIRFILTER response characteristic is defined by an array of filter coefficients that are convolved with the signal data — basically a sequence of multiply-and-add arithmetic operations. The magic lies in the choice of the coefficients. Here are coefficients that you can use.
Order |
Cutoff (% Nyquist Limit) |
Coefficients |
3 |
5 |
vector bw_ord3cut5 word = ( 3, 4, 6, 7, 8, 10, 12, 13, 15, 16,
17, 18, 19, 19, 18, 17, 16, 13, 10, 6, 0, -6, -13, -21, -31, -41, -52,
-63, -75, -87, -99, -110, -119, -127, -132, -134, -132, -125, -112,
-92,-64,-26, 21, 79, 150, 234, 331, 443, 569, 709, 863, 1030, 1207, 1392,
1581, 1769, 1949, 2110, 2237, 2295, 2237, 2110, 1949, 1769, 1581,
1392, 1207, 1030, 863, 709, 569, 443, 331, 234, 150, 79, 21, -26, -64,
-92, -112, -125, -132, -134, -132, -127, -119, -110, -99, -87, -75,
-63, -52 ,-41, -31, -21, -13, -6, 0, 6, 10, 13, 16, 17, 18, 19, 19, 18,
17, 16, 15, 13, 12, 10, 8, 7, 6, 4, 3 ) |
3 |
10 |
vector bw_ord3cut10 word = ( -1, -2, -2, -3, -4, -5, -5, -5,
-4, -3, 0, 4, 8, 14, 20, 26, 32, 36, 38, 35, 27, 11, -11, -43, -81,
-126, -174, -219, -254, -269, -250, -184, -53, 159, 468, 886, 1419,
2059, 2785, 3537, 4225, 4578, 4225, 3537, 2785, 2059, 1419, 886, 468,
159, -53, -184, -250, -269, -254, -219, -174, -126, -81, -43, -11, 11,
27, 35, 38, 36, 32, 26, 20, 14, 8, 4, 0, -3, -4, -5, -5, -5, -4, -3,
-2, -2, -1 |
3 |
15 |
vector bw_ord3cut15 word = ( 1, 1, 1, 1, 1, 0, -2, -4,
-5, -7, -8, -6, -2, 5, 17, 30, 44, 54, 55, 40, 2, -64,-155,
-261, -357,-403, -335, -80, 452, 1327, 2593, 4170, 5862, 6837, 5862, 4170,
2593, 1327, 452, -80, -335, -403, -357, -261, -155, -64, 2, 40, 55, 54, 44,
30, 17, 5, -2, -6, -8, -7, -5, -4, -2, 0, 1, 1 1, 1, 1 ) |
3 |
20 |
vector bw_ord3cut20 word = ( 1, 1, 2, 1, 0, -3, -6, -10,
-10, -5, 8, 27, 53, 72, 70, 22, -84, -254, -437, -539, -364, 313, 1780,
4104, 7113, 9058, 7113, 4104, 1780, 313, -364, -539, -437, -254, -84, 22,
70, 72, 53, 27, 8, -5, -10, -10, -6, -3, 0, 1, 2, 1, 1 ) |
3 |
25 |
vector bw_ord3cut25 word = ( 1, -4, -8, -13, -8, 8, 44, 79, 94,
26, -150, -439, -655, -468, 766, 3519, 7976, 11231, 7976, 3519, 766,
-468, -655, -439, -150, 26, 94, 79, 44, 8, -8, -13, -8, -4, 1 ) |
Order |
Cutoff (% Nyquist Limit) |
Coefficients |
4 |
5 |
vector bw_ord4cut5 word = ( -1, -2, -3, -3, -4, -5, -6, -7,
-8, -9, -10, -10, -10, -10, -10, -9, -8, -7, -5, -3, -1, 2, 5, 9,
13, 17, 21, 25, 29, 33, 36, 39, 41, 43, 43, 42, 40, 37, 32,
25, 16, 6, -6, -20, -36, -53, -71, -89, -108, -127, -144, -160, -174,
-185, -191, -192, -187, -174, -154, -124, -83, -32, 32, 108, 196, 298, 412,
539, 676, 823, 978, 1138, 1299, 1459, 1612, 1753, 1876, 1974, 2040, 2063,
2040, 1974, 1876, 1753, 1612, 1459, 1299, 1138, 978, 823, 676, 539, 412, 298,
196, 108, 32, -32, -83, -124, -154, -174, -187, -192, -191, -185, -174,
-160, -144, -127, -108, -89, -71, -53, -36, -20, -6, 6, 16, 25, 32,
37, 40, 42, 43, 43, 41, 39, 36, 33, 29, 25, 21, 17, 13, 9, 5, 2, -1, -3,
-5, -7, -8, -9, -10, -10, -10, -10, -10, -9, -8, -7, -6, -5, -4, -3,
-3, -2, -1 ) |
4 |
10 |
vector bw_ord4cut10 word = ( 1, 1, 2, 3, 4, 5, 5, 5, 4,
2, 0, -3, -7, -11, -15, -18, -20, -20, -19, -14, -7, 4, 18, 33, 50,
65, 78, 86, 85, 74, 50, 12, -41, -105, -178, -253, -321, -369, -384,
-349, -247, -63, 215, 596, 1078, 1647, 2276, 2918, 3506, 3949, 4126,
3949, 3506, 2918, 2276, 1647, 1078, 596, 215, -63, -247, -349, -384,
-369, -321, -253, -178, -105, -41, 12, 50, 74, 85, 86, 78, 65, 50,
33, 18, 4, -7, -14, -19, -20, -20, -18, -15, -11, -7, -3, 0,
2, 4, 5, 5, 5, 4, 3, 2, 1, 1 ) |
4 |
15 |
vector bw_ord4cut15 word = ( -1, -1, -2, -2, -1, 0, 2, 4, 6, 7, 7,
5, 1, -5, -13, -22, -29, -31, -25, -10, 16, 50, 87, 117, 130, 110, 49,
-61, -211, -380, -522, -576, -461, -95, 590, 1616, 2935, 4376, 5631, 6185,
5631, 4376, 2935, 1616, 590, -95, -461, -576, -522, -380, -211, -61, 49,
110, 130, 117, 87, 50, 16, -10, -25, -31, -29, -22, -13, -5, 1, 5, 7, 7,
6, 4, 2, 0, -1, -2, -2, -1, -1 ) |
4 |
20 |
vector bw_ord4cut20 word = ( -1, -2, -2, -2, -1, 1, 5, 8, 10,
7, -1, -14, -29, -40, -37, -13, 35, 99, 156, 170, 99, -81, -357, -641,
-768, -493, 430, 2157, 4548, 7020, 8237, 7020, 4548, 2157, 430, -493, -768,
-641, -357, -81, 99, 170, 156, 99, 35, -13, -37, -40, -29, -14, -1,
7, 10, 8, 5, 1, -1, -2, -2, -2, -1 ) |
4 |
25 |
vector bw_ord4cut25 word = ( -1, -2, -3, -2, 1, 7, 12, 11,
-1, -22, -45, -49, -17, 63, 163, 217, 123, -178, -634, -952, -620, 987,
4109, 8079, 10275, 8079, 4109, 987, -620, -952, -634, -178, 123, 217,
163, 63, -17, -49, -45, -22, -1, 11, 12, 7, 1, -2, -3, -2, -1 |
Order |
Cutoff (% Nyquist Limit) |
Coefficients |
6 |
5 |
vector bw_ord6cut5 word = ( 1, 3, 4, 5, 7, 8, 9, 10, 11,
12, 13, 13, 13, 12, 11, 10, 9, 7, 4, 1, -2,
-5, -8, -12, -16, -19, -22, -26, -28, -31, -32, -33, -33,
-33, -31, -28, -24, -19, -14, -7, 1, 9, 19, 28, 38,
47, 57, 65, 73, 80, 85, 88, 89, 88, 84, 77, 67,
54, 38, 19, -3, -27, -53, -81, -109, -138, -166, -192, -216,
-236, -252, -261, -264, -258, -244, -219, -183, -136, -77, -6, 78,
174, 281, 398, 524, 658, 797, 939, 1082, 1222, 1356, 1482, 1596,
1695, 1776, 1835, 1872, 1885, 1872, 1835, 1776, 1695, 1596, 1482, 1356,
1222, 1082, 939, 797, 658, 524, 398, 281, 174, 78, -6, -77,
-136, -183, -219, -244, -258, -264, -261, -252, -236, -216, -192, -166,
-138, -109, -81, -53, -27, -3, 19, 38, 54, 67, 77, 84,
88, 89, 88, 85, 80, 73, 65, 57, 47, 38, 28, 19,
9, 1, -7, -14, -19, -24, -28, -31, -33, -33, -33, -32, -31, -28,
-26, -22, -19, -16, -12, -8, -5, -2, 1, 4, 7, 9, 10, 11, 12, 13,
13, 13, 12, 11, 10, 9, 8, 7, 5, 4, 3, 1 ) |
6 |
10 |
vector bw_ord6cut10 word = ( -1, -1, -2, -2, -2, -1, -1, 0, 1,
1, 2, 3, 4, 4, 4, 3, 3, 1, -1, -3, -5, -7, -9, -10, -10,
-9, -7, -4, 0, 5, 11, 16, 21, 24, 26, 25, 20, 13, 3, -10,
-24, -38, -51, -61, -66, -65, -56, -39, -13, 19, 56, 95,
131, 160, 176, 175, 153, 107, 37, -54, -162, -276, -385, -473, -523,
-517, -438, -273, -11, 347, 796, 1316, 1878, 2444, 2965, 3390, 3671,
3769, 3671, 3390, 2965, 2444, 1878, 1316, 796, 347, -11, -273, -438,
-517, -523, -473, -385, -276, -162, -54, 37, 107, 153, 175, 176,
160, 131, 95, 56, 19, -13, -39, -56, -65, -66, -61, -51,
-38, -24, -10, 3, 13, 20, 25, 26, 24, 21, 16, 11, 5, 0,
-4, -7, -9, -10, -10, -9, -7, -5, -3, -1, 1, 3, 3, 4, 4,
4, 3, 2, 1, 1, 0, -1, -1, -2, -2, -2, -1, -1 ) |
6 |
15 |
vector bw_ord6cut15 word = ( -1, -2, -2, -2, -2, -1, 1,
3, 5, 6, 6, 5, 2, -2, -7, -12, -15, -15, -11, -3, 8, 20,
31, 38, 37, 26, 4, -25, -57, -85, -99, -92, -58, 3, 84, 170, 240,
267, 230, 113, -81, -328, -577, -755, -775, -550, -17, 842, 1974, 3245,
4447, 5327, 5654, 5327, 4447, 3245, 1974, 842, -17, -550, -775, -755,
-577, -328, -81, 113, 230, 267, 240, 170, 84, 3, -58, -92,
-99, -85, -57, -25, 4, 26, 37, 38, 31, 20, 8, -3, -11, -15,
-15, -12, -7, -2, 2, 5, 6, 6, 5, 3, 1, -1, -2, -2, -2, -2, -1 ) |
6 |
20 |
vector bw_ord6cut20 word = ( -1, -3, -3, -3, -1, 3, 6, 8,
7, 2, -5, -14, -20, -19, -8, 10, 32, 49, 49, 26, -19, -76, -122,
-130, -78, 38, 189, 319, 350, 214, -108, -552, -946, -1034, -545,
695, 2632, 4887, 6780, 7538, 6780, 4887, 2632, 695, -545, -1034,
-946, -552, -108, 214, 350, 319, 189, 38, -78, -130, -122, -76,
-19, 26, 49, 49, 32, 10, -8, -19, -20, -14, -5, 2, 7, 8,
6, 3, -1, -3, -3, -3, -1 ) |
6 |
25 |
vector bw_ord6cut25 word = ( 1, 0, -2, -4, -4, -1, 4, 9,
9, 3, -9, -22, -25, -10, 20, 52, 64, 33, -41, -128, -166, -97, 93,
327, 445, 268, -266, -962,-1320, -681, 1404, 4695, 7982, 9421, 7982, 4695,
1404, -681,-1320, -962, -266, 268, 445, 327, 93, -97, -166, -128, -41, 33,
64, 52, 20, -10, -25, -22, -9, 3, 9, 9, 4, -1, -4, -4, -2, 0, 1 ) |
Order |
Cutoff (% Nyquist Limit) |
Coefficients |
8 |
10 |
vector bw_ord8cut10 word = ( 1, 2, 2, 3, 3, 3, 3, 2, 1,
0, -1, -3, -4, -6, -6, -7, -6, -5, -3, -1, 2, 5, 8, 11,
12, 13, 12, 10, 7, 2, -4, -10, -16, -21, -25, -26, -25, -22,
-15, -5, 6, 19, 31, 42, 50, 54, 52, 45, 32, 12, -11, -37, -63,
-86, -103, -112, -110, -94, -66, -25, 25, 81, 138, 189, 227, 245, 238,
201, 133, 37, -84, -219, -356, -477, -567, -604, -572, -457, -249, 55,
449, 917, 1435, 1973, 2491, 2950, 3311, 3542, 3622, 3542, 3311, 2950, 2491,
1973, 1435, 917, 449, 55, -249, -457, -572, -604, -567, -477, -356, -219,
-84, 37, 133, 201, 238, 245, 227, 189, 138, 81, 25, -25, -66,
-94, -110, -112, -103, -86, -63, -37, -11, 12, 32, 45, 52, 54, 50,
42, 31, 19, 6, -5, -15, -22, -25, -26, -25, -21, -16, -10, -4, 2, 7,
10, 12, 13, 12, 11, 8, 5, 2, -1, -3, -5, -6, -7, -6, -6, -4,
-3, -1, 0, 1, 2, 3, 3, 3, 3, 2, 2, 1 ) |
8 |
15 |
vector bw_ord8cut15 word = ( 1, 1, 1, 1, 0, -1, -2, -2,
-2, -2, -1, 1, 2, 4, 5, 5, 4, 1, -2, -5, -8, -10, -9, -6,
-1, 6, 12, 18, 20, 17, 10, -1, -15, -28, -37, -39, -32, -15, 9,
37, 63, 79, 79, 59, 19 -36, -94, -144, -168, -156, -99, -2, 122, 247,
340, 367, 302, 133, -126, -432, -716, -889, -859, -547, 83, 1012, 2153,
3355, 4425, 5167, 5433, 5167, 4425, 3355, 2153, 1012, 83, -547, -859, -889,
-716, -432, -126, 133, 302, 367, 340, 247, 122, -2, -99, -156, -168, -144,
-94, -36, 19, 59, 79, 79, 63, 37, 9, -15, -32, -39, -37, -28, -15,
-1, 10, 17, 20, 18, 12, 6, -1, -6, -9, -10, -8, -5, -2, 1, 4,
5, 5, 4, 2, 1, -1, -2, -2, -2, -2, -1, 0, 1, 1, 1, 1 ) |
8 |
20 |
vector bw_ord8cut20 word = ( -1, -1, -1, 0, 1, 1, 2, 1, 0,
-1, -2, -3, -3, -1, 2, 5, 6, 6, 3, -3, -9, -13, -12, -6, 5, 17,
25, 25, 14, -7, -32, -50, -51, -29, 12, 62, 100, 105, 63, -22, -126,
-207, -219, -132, 50, 276, 453, 475, 267, -168, -711, -1133, -1145, -497,
897, 2871, 4981, 6622, 7244, 6622, 4981, 2871, 897, -497,-1145,-1133, -711,
-168, 267, 475, 453, 276, 50, -132, -219, -207, -126, -22, 63, 105, 100,
62, 12, -29, -51, -50, -32, -7, 14, 25, 25, 17, 5, -6, -12, -13, -9,
-3, 3, 6, 6, 5, 2, -1, -3, -3, -2, -1, 0, 1, 2, 1, 1, 0, -1,
-1, -1 ) |
8 |
25 |
vector bw_ord8cut25 word = ( 1, 2, 2, 1, -2, -4, -4, -1,
3, 7, 8, 3, -5, -14, -16, -8, 10, 27, 32, 17, -17, -53, -66, -37,
31, 105, 135, 79, -59, -215, -281, -165, 132, 472, 612, 334, -376,
-1194, -1495, -622, 1687, 4931, 7862, 9055, 7862, 4931, 1687, -622,
-1495, -1194, -376, 334, 612, 472, 132, -165, -281, -215, -59, 79,
135, 105, 31, -37, -66, -53, -17, 17, 32, 27, 10, -8, -16, -14, -5, 3,
8, 7, 3, -1, -4, -4, -2, 1, 2, 2, 1 ) |
Order |
Cutoff (% Nyquist Limit) |
Coefficients |
10 |
10 |
vector bw_ord10cut10 word = ( 1, 1, 2, 2, 3, 3, 3, 2, 1, 0, -1,
-2, -3, -4, -5, -5, -4, -4, -2, -1, 1, 3, 5, 7, 8, 8, 8, 7, 4, 2,
-2, -5, -9, -12, -14, -15, -14, -12, -8, -3, 3, 9, 15, 20, 24, 25, 25,
21, 15, 6, -4, -15, -26, -35, -42, -45, -44, -38, -26, -11, 7, 27, 47, 64,
76, 81, 79, 67, 47, 19, -15, -51, -87, -118, -141, -150, -145, -122, -83,
-29, 37, 108, 177, 236, 277, 293, 277, 226, 140, 23, -117, -268, -415, -539,
-622, -645, -592, -451, -217, 109, 518, 989, 1499, 2016, 2505, 2931, 3261,
3470, 3542, 3470, 3261, 2931, 2505, 2016, 1499, 989, 518, 109, -217, -451,
-592, -645, -622, -539, -415, -268, -117, 23, 140, 226, 277, 293, 277, 236,
177, 108, 37, -29, -83, -122, -145, -150, -141, -118, -87, -51, -15, 19, 47,
67, 79, 81, 76, 64, 47, 27, 7, -11, -26, -38, -44, -45, -42, -35,
-26, -15, -4, 6, 15, 21, 25, 25, 24, 20, 15, 9, 3, -3, -8, -12,
-14, -15, -14, -12, -9, -5, -2, 2, 4, 7, 8, 8, 8, 7, 5, 3, 1, -1,
-2, -4, -4, -5, -5, -4, -3 -2, -1, 0, 1, 2, 3, 3, 3, 2, 2, 1, 1 ) |
10 |
15 |
vector bw_ord10cut15 word = ( -1, -1, -1, -1, 0, 0, 1, 1, 1,
1, 1, 1, 0, -1, -2, -2, -2, -2, -1, 1, 2, 4, 4, 4, 3, 0, -2, -5,
-7, -7, -6, -4, 0, 5, 9, 12, 2, 10, 5, -3, -11, -18, -21, -21, -15,
-5, 9, 23, 33, 38, 35, 22, 2, -23, -47, -63, -68, -56, -29, 11,
56, 95, 119, 118, 88, 29, -49, -131, -196, -226, -204, -124, 5, 161, 312,
415, 433, 339, 128, -175, -515, -809, -964, -889, -519, 164, 1121, 2249,
3399, 4396, 5073, 5313, 5073, 4396, 3399, 2249, 1121, 164, -519, -889,
-964, -809, -515, -175, 128, 339, 433, 415, 312, 161, 5, -124, -204, -226,
-196, -131, -49, 29, 88, 118, 119, 95, 56, 11, -29, -56, -68, -63, -47,
-23, 2, 22, 35, 38, 33, 23, 9, -5, -15, -21, -21, -18, -11, -3, 5, 10,
12, 12, 9, 5, 0, -4, -6, -7, -7, -5, -2, 0, 3, 4, 4, 4, 2, 1, -1,
-2, -2, -2, -2, -1, 0, 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1 ) |
10 |
20 |
vector bw_ord10cut20 word = ( 1, 2, 2, 1, -1, -2, -3, -3, -1, 1,
4, 5, 5, 3, -2, -6, -9, -9, -5, 2, 10, 16, 16, 9, -4, -18, -27,
-28, -16, 5, 30, 48, 49, 29, -8, -52, -84, -88, -53, 14, 93, 152,
158, 95, -29, -174, -281, -290, -166, 74, 353, 554, 553, 280, -234, -830,
-1245, -1185, -434, 1035, 2999, 5010, 6522, 7084, 6522, 5010, 2999, 1035,
-434, -1185, -1245, -830, -234, 280, 553, 554, 353, 74, -166, -290, -281,
-174, -29, 95, 158, 152, 93, 14, -53, -88, -84, -52, -8, 29, 49, 48, 30,
5, -16, -28, -27, -18, -4, 9, 16, 16, 10, 2, -5, -9, -9, -6,
-2, 3, 5, 5, 4, 1, -1, -3, -3, -2, -1, 1, 2, 2, 1 ) |
10 |
25 |
vector bw_ord10cut25 word = ( -1, -1, -1, -1, 1, 2, 2, 1, -1,
-4, -4, -2, 2, 6, 7, 3, -4, -10, -12, -6, 6, 17, 21, 11, -9, -29, -36,
-20, 15, 51, 63, 37, -24, -89, -113, -66, 43, 159, 203, 118, -82, -296,
-374, -207, 180, 589, 722, 350, -480, -1348, -1573, -542, 1868, 5041,
7774, 8855, 7774, 5041, 1868, -542, -1573, -1348, -480, 350, 722, 589, 180,
-207, -374, -296, -82, 118, 203, 159, 43, -66, -113, -89, -24, 37, 63,
51, 15, -20, -36, -29, -9, 11, 21, 17, 6, -6, -12, -10, -4, 3, 7, 6,
2, -2, -4, -4, -1, 1, 2, 2, 1, -1, -1, -1, -1 ) |
Order |
Cutoff (% Nyquist Limit) |
Coefficients |
Select the vector that defines filtering with an appropriate rolloff frequency and filter order.
Return to the Multi-Channel Filtering main page for information on how to apply these filter designs.
|