Global

Members

WFft

Description:
  • FFT與iFFT

Source:

FFT與iFFT

Example
let arr
let res

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
res = wf.fft1d(arr)
console.log(res)
// => [
//   [ 120, 0 ],
//   [ -8, 40.21871593700678 ],
//   [ -8, 19.31370849898476 ],
//   [ -7.999999999999999, 11.972846101323913 ],
//   [ -8, 8 ],
//   [ -8, 5.345429103354391 ],
//   [ -8, 3.313708498984761 ],
//   [ -7.999999999999999, 1.5912989390372623 ],
//   [ -8, 0 ],
//   [ -7.999999999999999, -1.5912989390372623 ],
//   [ -8, -3.313708498984761 ],
//   [ -8, -5.345429103354391 ],
//   [ -8, -8 ],
//   [ -7.999999999999999, -11.972846101323913 ],
//   [ -8, -19.31370849898476 ],
//   [ -8, -40.21871593700678 ]
// ]

arr = [
    [120, 0],
    [-8, 40.21871593700678],
    [-8, 19.31370849898476],
    [-7.999999999999999, 11.972846101323913],
    [-8, 8],
    [-8, 5.345429103354391],
    [-8, 3.313708498984761],
    [-7.999999999999999, 1.5912989390372623],
    [-8, 0],
    [-7.999999999999999, -1.5912989390372623],
    [-8, -3.313708498984761],
    [-8, -5.345429103354391],
    [-8, -8],
    [-7.999999999999999, -11.972846101323913],
    [-8, -19.31370849898476],
    [-8, -40.21871593700678]
]
res = wf.ifft1d(arr)
console.log(res)
// => [
//    0,                  1,
//    2, 3.0000000000000018,
//    4,  5.000000000000002,
//    6,                  7,
//    8,                  9,
//   10, 10.999999999999998,
//   12, 12.999999999999998,
//   14,                 15
// ]

Methods

fft1d(arr) → {Array}

Description:
  • FFT1D

Source:
Example
let arr
let res

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
res = wf.fft1d(arr)
console.log(res)
// => [
//   [ 120, 0 ],
//   [ -8, 40.21871593700678 ],
//   [ -8, 19.31370849898476 ],
//   [ -7.999999999999999, 11.972846101323913 ],
//   [ -8, 8 ],
//   [ -8, 5.345429103354391 ],
//   [ -8, 3.313708498984761 ],
//   [ -7.999999999999999, 1.5912989390372623 ],
//   [ -8, 0 ],
//   [ -7.999999999999999, -1.5912989390372623 ],
//   [ -8, -3.313708498984761 ],
//   [ -8, -5.345429103354391 ],
//   [ -8, -8 ],
//   [ -7.999999999999999, -11.972846101323913 ],
//   [ -8, -19.31370849898476 ],
//   [ -8, -40.21871593700678 ]
// ]
Parameters:
Name Type Description
arr Array

輸入數據陣列

Returns:

回傳轉換後數據陣列

Type
Array

filter1d(arr, dt, hzStart, hzEnd) → {Array}

Description:
  • FFT1D Filter

Source:
Example
let dt
let arr
let res

//dt=0.0078125s, 3+6hz
dt = 0.0078125

arr = [
    0,
    0.437015151709824,
    0.845854910274064,
    1.20056554679302,
    1.47944976553089,
    1.66674368151922,
    1.75379573376597,
    1.73964987434863,
    1.63098631369783,
    1.44142799002054,
    1.19027504868833,
    0.900778315875612,
    0.598101848038141,
    0.307150781019375,
    0.0504516520458098,
    -0.153732804251563,
    -0.292893218813452,
    -0.361241031239776,
    -0.360072875476548,
    -0.297503430771426,
    -0.187593110348962,
    -0.0489494660021425,
    0.0970731816865672,
    0.228416556922734,
    0.324423348821458,
    0.367818520155133,
    0.346391996239585,
    0.254233601317238,
    0.0924099202087415,
    -0.130978839760706,
    -0.401370102712605,
    -0.698891832710318,
    -1,
    -1.27946118721924,
    -1.51251056875181,
    -1.67699974648618,
    -1.75534914481383,
    -1.73613585202716,
    -1.61517856456688,
    -1.39602400854158,
    -1.08979021355164,
    -0.714376916729265,
    -0.293107462345689,
    0.147084814656977,
    0.577773754381215,
    0.971283137555866,
    1.30286634912854,
    1.55263964022464,
    1.70710678118655,
    1.76014786721285,
    1.7133908766509,
    1.57593734934667,
    1.36346871276832,
    1.09681259653473,
    0.80009440465607,
    0.498634516368545,
    0.216772751324739,
    -0.0241926543480825,
    -0.207774827040493,
    -0.323625771825179,
    -0.368309299491684,
    -0.345455359932455,
    -0.265285555765141,
    -0.1435542027991,
    -3.67544536472586E-16,
    0.1435542027991,
    0.26528555576514,
    0.345455359932455,
    0.368309299491684,
    0.323625771825179,
    0.207774827040493,
    0.0241926543480835,
    -0.216772751324738,
    -0.498634516368544,
    -0.800094404656069,
    -1.09681259653473,
    -1.36346871276832,
    -1.57593734934667,
    -1.7133908766509,
    -1.76014786721285,
    -1.70710678118655,
    -1.55263964022464,
    -1.30286634912855,
    -0.971283137555864,
    -0.577773754381218,
    -0.14708481465698,
    0.293107462345686,
    0.714376916729258,
    1.08979021355163,
    1.39602400854158,
    1.61517856456688,
    1.73613585202716,
    1.75534914481383,
    1.67699974648618,
    1.51251056875181,
    1.27946118721924,
    1,
    0.698891832710321,
    0.40137010271261,
    0.130978839760704,
    -0.0924099202087405,
    -0.254233601317238,
    -0.346391996239584,
    -0.367818520155133,
    -0.324423348821457,
    -0.228416556922734,
    -0.0970731816865679,
    0.0489494660021418,
    0.18759311034896,
    0.297503430771423,
    0.360072875476548,
    0.361241031239776,
    0.292893218813452,
    0.153732804251566,
    -0.0504516520458086,
    -0.307150781019376,
    -0.598101848038137,
    -0.900778315875611,
    -1.19027504868833,
    -1.44142799002054,
    -1.63098631369783,
    -1.73964987434863,
    -1.75379573376597,
    -1.66674368151922,
    -1.47944976553089,
    -1.20056554679302,
    -0.845854910274064,
    -0.43701515170983,
]

res = wf.filter1d(arr, dt, 0, 2)
fs.writeFileSync('./filter1d_128p_0_2Hz.txt', _.join(_.map(res, w.cstr), '\n'), 'utf8')
console.log(res)
// => [
//     1.900130354665816e-17,   3.171289289530446e-17,   4.332415707367346e-17,
//    5.3695846472494235e-17,   6.269785986213638e-17,   7.021057013202281e-17,
//     7.612605570310054e-17,   8.034922556306299e-17,   8.279882688317987e-17,
//     8.340832529158958e-17,   8.212664909001537e-17,   7.891878999746445e-17,
//     7.376625437307838e-17,   6.666736029780011e-17,    5.76373773671691e-17,
//     4.670850755121418e-17,   3.392970699761463e-17,   1.936635017644406e-17,
//     3.099739274245762e-18, -1.4773536772583848e-17,  -3.414238777438079e-17,
//    -5.488214509861833e-17,  -7.685561326121688e-17,  -9.991424053039947e-17,
//   -1.2389939763250017e-16,  -1.486437526110982e-16, -1.7397272896700838e-16,
//   -1.9970603340589478e-16,  -2.256592388503064e-16,  -2.516454078402015e-16,
//     -2.77476741055675e-16, -3.0296623545138124e-16, -3.2792933639642097e-16,
//   -3.5218556826715847e-16, -3.7556012814304826e-16,  -3.978854276051409e-16,
//   -4.1900256813015115e-16,  -4.387627362050729e-16,  -4.570285050522503e-16,
//    -4.736750307452075e-16,  -4.885911315028551e-16,  -5.016802400642502e-16,
//    -5.128612202571727e-16,  -5.220690401697757e-16,  -5.292552957029921e-16,
//    -5.343885797091161e-16,  -5.374546933952765e-16,  -5.384566981752595e-16,
//    -5.374148076748214e-16,   -5.34366121119686e-16,  -5.293642008471598e-16,
//    -5.224784981672418e-16,  -5.137936332429572e-16,  -5.034085360485657e-16,
//    -4.914354567849328e-16,  -4.779988553710472e-16,  -4.632341807774995e-16,
//    -4.472865520107286e-16,  -4.303093534859731e-16,  -4.124627583332443e-16,
//    -3.939121938565287e-16, -3.7482676390538224e-16, -3.5537764331493207e-16,
//    -3.357364598212945e-16, -3.1607367896215424e-16,  -2.965570074258067e-16,
//    -2.773498301168155e-16,  -2.586096958645067e-16, -2.4048686621515183e-16,
//    -2.231229411245869e-16,  -2.066495746112324e-16, -1.9118729254734605e-16,
//   -1.7684442376738718e-16, -1.6371615456625556e-16, -1.5188371545758223e-16,
//   -1.4141370777480338e-16,  -1.323575763378787e-16, -1.2475123298934835e-16,
//   -1.1861483433865337e-16, -1.1395271555741253e-16, -1.1075348055508646e-16,
//   -1.0899024734876648e-16, -1.0862104593732587e-16, -1.0958936451335684e-16,
//   -1.1182483841044193e-16, -1.1524407480220627e-16,  -1.197516048565951e-16,
//   -1.2524095381656962e-16, -1.3159581833879772e-16, -1.3869133938591487e-16,
//   -1.4639545804553208e-16, -1.5457034084925898e-16, -1.6307386049529978e-16,
//   -1.7176111734511303e-16, -1.8048598667334478e-16, -1.8910267640450308e-16,
//    -1.974672799720086e-16,  -2.054393089862649e-16, -2.1288319059773535e-16,
//   -2.1966971478677226e-16,
//   ... 28 more items
// ]

res = wf.filter1d(arr, dt, 0, 4)
fs.writeFileSync('./filter1d_128p_0_4Hz.txt', _.join(_.map(res, w.cstr), '\n'), 'utf8')
console.log(res)
// => [
//   -4.827486540753305e-16,    0.1467304744553614,  0.29028467725446216,
//      0.42755509343028203,    0.5555702330196024,   0.6715589548470189,
//       0.7730104533627374,    0.8577286100002727,   0.9238795325112873,
//        0.970031253194545,    0.9951847266721979,   0.9987954562051734,
//       0.9807852804032313,    0.9415440651830219,   0.8819212643483562,
//        0.803207531480646,    0.7071067811865485,   0.5956993044924345,
//       0.4713967368259986,   0.33688985339222094,  0.19509032201612894,
//     0.049067674327418584,  -0.09801714032956012, -0.24298017990326354,
//     -0.38268343236508945,   -0.5141027441932216,  -0.6343932841636454,
//      -0.7409511253549594,   -0.8314696123025456,  -0.9039892931234439,
//      -0.9569403357322095,   -0.9891765099647818,  -1.0000000000000007,
//       -0.989176509964782,   -0.9569403357322102,  -0.9039892931234446,
//      -0.8314696123025467,   -0.7409511253549607,  -0.6343932841636468,
//      -0.5141027441932232,  -0.38268343236509117,  -0.2429801799032654,
//     -0.09801714032956207,   0.04906767432741662,    0.195090322016127,
//      0.33688985339221894,   0.47139673682599664,   0.5956993044924324,
//       0.7071067811865467,    0.8032075314806444,   0.8819212643483545,
//       0.9415440651830205,    0.9807852804032301,   0.9987954562051723,
//       0.9951847266721967,    0.9700312531945441,   0.9238795325112867,
//       0.8577286100002725,    0.7730104533627374,   0.6715589548470189,
//       0.5555702330196027,    0.4275550934302826,   0.2902846772544628,
//      0.14673047445536228, 4.752026505856477e-16, -0.14673047445536128,
//     -0.29028467725446194,   -0.4275550934302818,  -0.5555702330196022,
//      -0.6715589548470184,    -0.773010453362737,  -0.8577286100002722,
//      -0.9238795325112868,   -0.9700312531945445,  -0.9951847266721975,
//      -0.9987954562051732,   -0.9807852804032311,  -0.9415440651830217,
//      -0.8819212643483559,   -0.8032075314806458,  -0.7071067811865485,
//      -0.5956993044924345,   -0.4713967368259986, -0.33688985339222105,
//     -0.19509032201612905,  -0.04906767432741875,  0.09801714032955992,
//      0.24298017990326332,    0.3826834323650892,   0.5141027441932213,
//       0.6343932841636452,     0.740951125354959,   0.8314696123025451,
//       0.9039892931234434,     0.956940335732209,   0.9891765099647813,
//       1.0000000000000002,    0.9891765099647816,   0.9569403357322097,
//       0.9039892931234439,
//   ... 28 more items
// ]

res = wf.filter1d(arr, dt, 4, 8)
fs.writeFileSync('./filter1d_128p_4_8Hz.txt', _.join(_.map(res, w.cstr), '\n'), 'utf8')
console.log(res)
// => [
//   -5.79305934263002e-16,     0.2902846772544621,   0.5555702330196025,
//      0.7730104533627378,     0.9238795325112876,   0.9951847266721983,
//       0.980785280403232,     0.8819212643483566,   0.7071067811865489,
//       0.471396736825999,    0.19509032201612922, -0.09801714032956009,
//     -0.3826834323650895,    -0.6343932841636457,  -0.8314696123025459,
//     -0.9569403357322098,     -1.000000000000001,  -0.9569403357322103,
//     -0.8314696123025468,    -0.6343932841636469,   -0.382683432365091,
//    -0.09801714032956177,    0.19509032201612747,  0.47139673682599736,
//      0.7071067811865476,     0.8819212643483555,   0.9807852804032312,
//      0.9951847266721979,     0.9238795325112878,   0.7730104533627384,
//      0.5555702330196037,     0.2902846772544636, 1.11697531048158e-15,
//    -0.29028467725446144,    -0.5555702330196017,   -0.773010453362737,
//     -0.9238795325112868,    -0.9951847266721975,  -0.9807852804032314,
//     -0.8819212643483562,    -0.7071067811865488,  -0.4713967368259991,
//    -0.19509032201612952,     0.0980171403295596,   0.3826834323650889,
//       0.634393284163645,     0.8314696123025451,   0.9569403357322093,
//      1.0000000000000004,     0.9569403357322098,   0.8314696123025465,
//      0.6343932841636467,    0.38268343236509095,   0.0980171403295618,
//    -0.19509032201612736,   -0.47139673682599714,  -0.7071067811865472,
//     -0.8819212643483553,     -0.980785280403231,  -0.9951847266721975,
//     -0.9238795325112876,     -0.773010453362738,  -0.5555702330196034,
//    -0.29028467725446333, -8.663552482114443e-16,  0.29028467725446166,
//      0.5555702330196018,     0.7730104533627369,   0.9238795325112867,
//      0.9951847266721974,     0.9807852804032311,   0.8819212643483559,
//      0.7071067811865485,    0.47139673682599875,  0.19509032201612922,
//    -0.09801714032955984,   -0.38268343236508906,   -0.634393284163645,
//      -0.831469612302545,    -0.9569403357322089,  -1.0000000000000002,
//     -0.9569403357322096,    -0.8314696123025461,  -0.6343932841636465,
//     -0.3826834323650908,   -0.09801714032956171,   0.1950903220161273,
//     0.47139673682599703,     0.7071067811865471,   0.8819212643483548,
//      0.9807852804032305,     0.9951847266721973,   0.9238795325112874,
//       0.773010453362738,     0.5555702330196033,   0.2902846772544634,
//   9.714153559505677e-16,   -0.29028467725446144,  -0.5555702330196017,
//     -0.7730104533627368,
//   ... 28 more items
// ]
Parameters:
Name Type Description
arr Array

輸入數據陣列

dt Number

輸入數據點時間間隔數字,單位s

hzStart Number

輸入過濾用帶通頻率下限數字,單位Hz

hzEnd Number

輸入過濾用帶通頻率上限數字,單位Hz

Returns:

回傳帶通處理後數據陣列

Type
Array

ifft1d(arr) → {Array}

Description:
  • iFFT1D

Source:
Example
let arr
let res

arr = [
    [120, 0],
    [-8, 40.21871593700678],
    [-8, 19.31370849898476],
    [-7.999999999999999, 11.972846101323913],
    [-8, 8],
    [-8, 5.345429103354391],
    [-8, 3.313708498984761],
    [-7.999999999999999, 1.5912989390372623],
    [-8, 0],
    [-7.999999999999999, -1.5912989390372623],
    [-8, -3.313708498984761],
    [-8, -5.345429103354391],
    [-8, -8],
    [-7.999999999999999, -11.972846101323913],
    [-8, -19.31370849898476],
    [-8, -40.21871593700678]
]
res = wf.ifft1d(arr)
console.log(res)
// => [
//    0,                  1,
//    2, 3.0000000000000018,
//    4,  5.000000000000002,
//    6,                  7,
//    8,                  9,
//   10, 10.999999999999998,
//   12, 12.999999999999998,
//   14,                 15
// ]
Parameters:
Name Type Description
arr Array

輸入數據陣列

Returns:

回傳轉換後數據陣列

Type
Array