Ada beberapa utas diskusi dan jawaban yang bagus di situs ini (eletronics.se) tentang teori transformasi Fourier. Saya mencoba menerapkan hal yang sama dalam alat simulasi (MS Excel :)).
Saya memiliki beberapa masalah interpretasi dan implementasi mengenai hal yang sama. Saya mencoba menganalisis bentuk gelombang tegangan 50 Hz. Namun, data di bawah ini hanya menghasilkan data tiruan yang mencoba membangun kerangka kerja konseptual untuk implementasi pada memori dan daya pemrosesan yang dibatasi prosesor 16 bit tertanam biaya rendah.
ETA (30 Mei 2012)
TL; versi DR:
Tak perlu dikatakan pada electronics.se tapi saya menggunakan memori dan prosesor pemrosesan daya yang dibatasi tertanam.
Ada beberapa pertanyaan di sini yang masih belum terjawab:
- Bagaimana cara windowing dilakukan pada sampel yang saya miliki tanpa secara signifikan meningkatkan jejak memori algoritma? Saya ingin ini menjadi deskripsi langkah demi langkah dasar, karena saya cukup baru untuk DSP.
- Mengapa besarnya dibelah dua ketika saya menginterpolasi 41 sampel untuk mendapatkan 32, tetapi tetap seperti itu (kecuali untuk beberapa kebisingan) ketika saya interpolasi mereka untuk menurunkan 64?
Saya menyatakan hadiah pada pertanyaan dengan harapan bahwa saya mendapatkan beberapa jawaban bagus yang dapat ditindaklanjuti untuk pemula di DSP.
Eksperimen 1:
Input Domain Waktu
Saya menghasilkan gelombang sinus menggunakan untuk menghasilkan 64 sampel. Saya kemudian menambahkan 30% 3 r d harmonik, 20% 5 t h harmonik, 15% 7 t h harmonik, 10% 9 t h harmonik, dan 20% 11 t h harmonik. Ini menyebabkan sampel-sampel ini:
0, 0.628226182, 0.939545557, 0.881049194, 0.678981464, 0.602991986, 0.719974543,
0.873221372, 0.883883476, 0.749800373, 0.636575155, 0.685547957, 0.855268479,
0.967780108, 0.904799909, 0.737695292, 0.65, 0.737695292, 0.904799909, 0.967780108,
0.855268479, 0.685547957, 0.636575155, 0.749800373, 0.883883476, 0.873221372,
0.719974543, 0.602991986, 0.678981464, 0.881049194, 0.939545557, 0.628226182, 0,
-0.628226182, -0.939545557, -0.881049194, -0.678981464, -0.602991986, -0.719974543,
-0.873221372, -0.883883476, -0.749800373, -0.636575155, -0.685547957, -0.855268479,
-0.967780108, -0.904799909, -0.737695292, -0.65, -0.737695292, -0.904799909,
-0.967780108, -0.855268479, -0.685547957, -0.636575155, -0.749800373, -0.883883476,
-0.873221372, -0.719974543, -0.602991986, -0.678981464, -0.881049194, -0.939545557,
-0.628226182
Dan bentuk gelombang ini:
Saya mengambil DFT dari sampel-sampel ini berdasarkan pada algoritma Radix 2 dan mendapatkan nilai-nilai ini:
0, -32i, 0, -9.59999999999999i, 0, -6.4i, 0, -4.79999999999999i, 0, -3.20000000000001i,
0, -6.4i, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.4i, 0, 3.19999999999999i, 0, 4.8i, 0,
6.4i, 0, 9.60000000000001i, 0, 32i
Mengambil nilai absolut dari bilangan kompleks di atas sebagai rasio terhadap nilai fundamental (nilai ke-2) dan mengabaikan informasi fase (jika ada), saya mendapatkan besaran komponen harmonik yang diinjeksikan persis seperti yang diinjeksikan.
Representasi Domain Frekuensi
Sejauh ini baik.
Eksperimen 2:
Input Domain Waktu
0, 0.853079823, 0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841,
0.676188057, 0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879,
0.802820512, 0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632,
0.954031849, 0.50925641, -0.50925641, -0.954031849, -0.696479632, -0.639141079,
-0.875637458, -0.814329015, -0.632264626, -0.802820512, -0.968738879, -0.765676034,
-0.664562475, -0.897723205, -0.928419527, -0.676188057, -0.695656841, -0.896260999,
-0.762429734, -0.603896038, -0.857877516, -0.853079823, -6.87889E-15, 0.853079823,
0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841, 0.676188057,
0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879, 0.802820512,
0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632, 0.954031849,
0.50925641, -0.50925641, -0.954031849
Dan bentuk gelombang ini:
Saya mengambil DFT dari sampel-sampel ini berdasarkan pada algoritma Radix 2 dan mendapatkan nilai-nilai ini:
14.03118145099, 22.8331789450432+2.81923657448236i, -17.9313890484703-4.4853739490832i,
-2.54294462900052-0.971245447370764i, 1.74202662319821+0.944780377248239i,
-7.2622766435314-5.09627264287862i, -1.5480700475686-1.37872970296476i,
-0.136588568631116-0.126111953353714i, -3.99554928315394-5.93646306363598i,
-0.840633449276516-1.60987487366169i, -0.373838501691708-0.955596009389976i,
-1.326751987645-5.7574455633693i, -0.168983464443025-1.34797078005724i,
-9.49818315071085E-003-1.20377723286595i, 0.571706242298176-4.14055455367115i,
0.192891008647316-0.865793520825366i, 0.457088076063747-1.22893647561869i,
3.15565897700047-5.67394957744733i, -0.573520124828716+0.682717512668197i,
-0.20041207669728+0.127925509089274i, -7.95516670999013E-002-1.22174958722397E-002i,
-1.57510358481328E-002-6.44533006507588E-002i, 2.50067192003906E-002-8.46645685508359E-
002i, 5.3665806842526E-002-9.01867018999554E-002i, 7.49143167927897E-002-
8.80550417489663E-002i, 9.11355142202819E-002-8.16075816185574E-002i,
0.103685444073525-7.25978085593222E-002i, 0.11339684328631-6.20147712757682E-002i,
0.120807189654211-5.04466357453455E-002i, 0.126272708495893-3.82586162066316E-002i,
0.130029552904267-2.56872914345987E-002i, 0.132228055573542-1.28943815159261E-002i,
0.1329519244939, 0.132228055573544+1.28943815159441E-002i,
0.130029552904267+2.56872914345769E-002i, 0.126272708495892+3.82586162066264E-002i,
0.12080718965421+5.04466357453468E-002i, 0.113396843286315+6.20147712757588E-002i,
0.103685444073529+7.25978085593135E-002i, 9.11355142202805E-002+8.16075816185583E-002i,
7.4914316792795E-002+8.80550417489592E-002i, 5.36658068425271E-002+9.01867018999563E-
002i, 2.50067192003947E-002+8.46645685508275E-002i, -1.57510358481296E-
002+6.44533006507526E-002i, -7.95516670999005E-002+1.22174958722402E-002i,
-0.20041207669728-0.127925509089278i, -0.573520124828709-0.682717512668206i,
3.15565897700049+5.67394957744733i, 0.45708807606375+1.22893647561869i,
0.192891008647318+0.865793520825373i, 0.571706242298199+4.14055455367114i,
-9.49818315070294E-003+1.20377723286595i, -0.168983464443023+1.34797078005724i,
-1.32675198764498+5.75744556336931i, -0.373838501691692+0.955596009389972i,
-0.840633449276515+1.6098748736617i, -3.99554928315393+5.93646306363599i,
-0.136588568631125+0.126111953353722i, -1.54807004756858+1.37872970296476i,
-7.26227664353139+5.09627264287866i, 1.7420266231982-0.944780377248243i,
-2.54294462900053+0.971245447370785i, -17.9313890484703+4.48537394908326i,
22.8331789450432-2.81923657448243i
Representasi frekuensi domain
Besarnya bilangan kompleks di atas tidak mengungkapkan apa pun yang dapat saya simpulkan kembali ke nilai yang disuntikkan dalam domain waktu.
Eksperimen 3
Input Domain Waktu:
Saya sekarang mengambil bentuk gelombang yang sama dan nol pad itu yaitu mengatur semua sampel di luar 41 ke nol. Jadi berikut ini adalah input domain waktu:
0, 0.853079823, 0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841,
0.676188057, 0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879,
0.802820512, 0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632,
0.954031849, 0.50925641, -0.50925641, -0.954031849, -0.696479632, -0.639141079,
-0.875637458, -0.814329015, -0.632264626, -0.802820512, -0.968738879, -0.765676034,
-0.664562475, -0.897723205, -0.928419527, -0.676188057, -0.695656841, -0.896260999,
-0.762429734, -0.603896038, -0.857877516, -0.853079823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Dan bentuk gelombangnya:
Saya mengambil DFT dari sampel-sampel ini berdasarkan pada algoritma Radix 2 dan mendapatkan nilai-nilai ini:
0, 20.0329458083285-9.47487772467906i, -10.5723252177717-8.67648307596821i,
-8.88751906208901E-002+0.354809649783859i, 3.59322342970171-0.714736578926027i,
-3.28379151210465-4.42768029850565i, -0.232297876050463+0.434598758428557i,
1.68672762980862+8.28636148716246E-002i, -1.54927040705738-3.7402696285012i,
-0.551413356435698+0.608390885175318i, 0.616809338622588+0.187107067289195i,
-0.458965526924983-3.09409425549091i, -0.966784216252588+0.645984560777537i,
7.03082277241579E-003+4.21411299459407E-003i, 0.196179960454289-1.99184856512683i,
-0.919089774378072+0.328855579674163i, 0.222736292145887+0.222736292145884i,
1.23799833509466-3.45997355924453i, -3.29198268057418+0.324231994037239i,
-0.495840326552116-0.827259606915814i, -0.434268223171498+0.649928325340974i,
-1.13740282784196-0.168717771696843i, -8.50255402020411E-002-0.280291642522456i,
-0.495871287837938+0.449431537929797i, -0.705190861543966-0.292099618913078i,
-1.8498657760867E-003-3.76548829156425E-002i, -0.56327531746565+0.301076929791613i,
-0.445444858519027-0.330364422654705i, -2.53084763487132E-002+0.12723430263342i,
-0.608135034699087+0.152329896227613i, -0.254967975468-0.31067937701979i,
-0.114451748984804+0.241987891739128i, -0.623647028694518, -0.114451748984793-
0.241987891739111i, -0.254967975467992+0.310679377019776i, -0.608135034699088-
0.152329896227612i, -2.53084763487126E-002-0.127234302633416i,
-0.445444858519022+0.330364422654704i, -0.563275317465649-0.301076929791616i,
-1.84986577609081E-003+3.76548829156447E-002i, -0.705190861543962+0.292099618913075i,
-0.495871287837939-0.449431537929793i, -8.50255402020378E-002+0.280291642522452i,
-1.13740282784196+0.168717771696845i, -0.434268223171501-0.649928325340972i,
-0.495840326552115+0.827259606915815i, -3.29198268057417-0.324231994037237i,
1.23799833509466+3.45997355924453i, 0.222736292145887-0.222736292145884i,
-0.919089774378077-0.328855579674149i, 0.1961799604543+1.99184856512683i,
7.03082277241257E-003-4.21411299459534E-003i, -0.966784216252593-0.645984560777534i,
-0.458965526924974+3.09409425549092i, 0.616809338622592-0.187107067289204i,
-0.551413356435713-0.608390885175314i, -1.54927040705737+3.74026962850121i,
1.68672762980861-8.28636148716247E-002i, -0.232297876050455-0.434598758428559i,
-3.28379151210465+4.42768029850566i, 3.59322342970171+0.714736578926018i,
-8.88751906209093E-002-0.354809649783852i, -10.5723252177717+8.67648307596825i,
20.0329458083285+9.47487772467899i
Representasi Domain Frekuensi
Sekali lagi, Besarnya bilangan kompleks di atas tidak mengungkapkan apa pun yang dapat saya simpulkan kembali ke nilai yang disuntikkan dalam domain waktu.
ETA Karena jawaban di sini mengarahkan saya ke windowing, saya melakukan percobaan lain dan mendapatkan hasil berikut setelah banyak kesalahan awal.
Eksperimen 4
Representasi domain waktu
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.853079823, 0.857877516, 0.603896038,
0.762429734, 0.896260999, 0.695656841, 0.676188057, 0.928419527, 0.897723205,
0.664562475, 0.765676034, 0.968738879, 0.802820512, 0.632264626, 0.814329015,
0.875637458, 0.639141079, 0.696479632, 0.954031849, 0.50925641, -0.50925641,
-0.954031849, -0.696479632, -0.639141079, -0.875637458, -0.814329015, -0.632264626,
-0.802820512, -0.968738879, -0.765676034, -0.664562475, -0.897723205, -0.928419527,
-0.676188057, -0.695656841, -0.896260999, -0.762429734, -0.603896038, -0.857877516,
-0.853079823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Seperti:
Koefisien Jendela Hamming
0.08, 0.082285843, 0.089120656, 0.100436509, 0.116120943, 0.136018076, 0.159930164,
0.187619556, 0.218811064, 0.253194691, 0.290428719, 0.330143098, 0.371943129,
0.415413385, 0.460121838, 0.505624157, 0.551468118, 0.597198104, 0.64235963,
0.686503859, 0.729192067, 0.77, 0.808522089, 0.844375485, 0.877203861, 0.906680953,
0.932513806, 0.954445679, 0.972258606, 0.985775552, 0.99486218, 0.999428184,
0.999428184, 0.99486218, 0.985775552, 0.972258606, 0.954445679, 0.932513806,
0.906680953, 0.877203861, 0.844375485, 0.808522089, 0.77, 0.729192067, 0.686503859,
0.64235963, 0.597198104, 0.551468118, 0.505624157, 0.460121838, 0.415413385,
0.371943129, 0.330143098, 0.290428719, 0.253194691, 0.218811064, 0.187619556,
0.159930164, 0.136018076, 0.116120943, 0.100436509, 0.089120656, 0.082285843, 0.080.08,
0.082285843, 0.089120656, 0.100436509, 0.116120943, 0.136018076, 0.159930164,
0.187619556, 0.218811064, 0.253194691, 0.290428719, 0.330143098, 0.371943129,
0.415413385, 0.460121838, 0.505624157, 0.551468118, 0.597198104, 0.64235963,
0.686503859, 0.729192067, 0.77, 0.808522089, 0.844375485, 0.877203861, 0.906680953,
0.932513806, 0.954445679, 0.972258606, 0.985775552, 0.99486218, 0.999428184,
0.999428184, 0.99486218, 0.985775552, 0.972258606, 0.954445679, 0.932513806,
0.906680953, 0.877203861, 0.844375485, 0.808522089, 0.77, 0.729192067, 0.686503859,
0.64235963, 0.597198104, 0.551468118, 0.505624157, 0.460121838, 0.415413385,
0.371943129, 0.330143098, 0.290428719, 0.253194691, 0.218811064, 0.187619556,
0.159930164, 0.136018076, 0.116120943, 0.100436509, 0.089120656, 0.082285843, 0.08
Terlihat seperti ini
Produk mereka (Apakah hanya produk sederhana?)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.354380777, 0.394728179, 0.305344425,
0.420455691, 0.53524537, 0.446861871, 0.464205711, 0.676996154, 0.691246868,
0.537313441, 0.646518073, 0.849781485, 0.727902068, 0.589595493, 0.77723281,
0.851346054, 0.63004965, 0.692901245, 0.953486318, 0.508965209, -0.506639943,
-0.940461272, -0.677158316, -0.610025441, -0.816544018, -0.738336608, -0.554624971,
-0.67788196, -0.783246782, -0.589570546, -0.484593685, -0.616290445, -0.596379223,
-0.403818226, -0.383632569, -0.453171212, -0.350810571, -0.250866497, -0.319081647,
-0.281638415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Terlihat seperti:
Representasi Domain Frekuensi
1.01978454171002, -1.04956742046721-14.885596686908i,
0.729587297164687+12.4883097743251i, -0.393281811348907-4.24261013057826i,
0.761581725234628+3.2398820477072i, -0.876737136684714-3.79393194973719i,
0.480276094694696+1.88418789653125i, -0.735142602781246-1.8175563772351i,
1.02811278581892+2.5331069394699i, -0.584707361656586-1.41705783059227i,
0.642189640425863+1.09157435002371i, -1.08027274688044-1.77950446999262i,
0.690373934734768+1.16057125940753i, -0.45786262480057-0.586349217392973i,
0.837117486838485+0.985681387258948i, -0.684335876271999-0.810862267851556i,
0.930190039748881+0.842491953501215i, -2.11497450796919-1.82531206712061i,
1.77660184883125+1.59539043421572i, -8.20687157856373E-003-0.123202767234891i,
-0.280149317662962-0.244195928734504i, -0.313777442633104-0.174757927010731i,
-5.83069102281942E-002+1.54514819958589E-002i, 0.211135948552966+0.12606544182717i,
0.227409826380236+7.86489707052085E-002i, 2.49029866186928E-003-3.26908578232317E-002i,
-0.204885728671642-7.60371335974082E-002i, -0.174609549526536-2.58285031988847E-002i,
4.55943100777029E-002+3.62216126377679E-002i, 0.205437067084294+3.66474457853982E-002i,
0.130866115437055-7.39089659931302E-003i, -8.90307098969982E-002-2.75195665163235E-
002i, -0.206016142964952, -8.90307098969848E-002+2.75195665163199E-002i,
0.130866115437044+7.39089659931835E-003i, 0.205437067084297-3.66474457854036E-002i,
4.55943100777004E-002-3.62216126377661E-002i, -0.174609549526531+2.58285031988801E-
002i, -0.204885728671643+7.60371335974132E-002i, 2.49029866187001E-
003+3.26908578232264E-002i, 0.227409826380234-7.86489707052067E-002i, 0.21113594855297-
0.126065441827174i, -5.83069102281978E-002-1.54514819958551E-002i,
-0.313777442633101+0.174757927010727i, -0.280149317662962+0.244195928734507i,
-8.20687157856043E-003+0.123202767234886i, 1.77660184883125-1.59539043421572i,
-2.11497450796919+1.82531206712061i, 0.930190039748879-0.842491953501215i,
-0.684335876271989+0.810862267851559i, 0.837117486838478-0.985681387258952i,
-0.457862624800567+0.586349217392971i, 0.690373934734765-1.16057125940753i,
-1.08027274688043+1.77950446999263i, 0.642189640425861-1.09157435002371i,
-0.584707361656583+1.41705783059227i, 1.02811278581891-2.5331069394699i,
-0.735142602781236+1.81755637723511i, 0.480276094694689-1.88418789653125i,
-0.876737136684699+3.79393194973719i, 0.76158172523462-3.2398820477072i,
-0.393281811348889+4.24261013057827i, 0.729587297164646-12.4883097743252i,
-1.04956742046715+14.885596686908i
Terlihat seperti ini:
Apakah ini hasil yang valid? Karena sepertinya saya masih belum mendapatkan apa-apa!
Saya melakukan dua percobaan lagi dan tampaknya mendekati menggoda untuk hasil yang dimaksudkan, tetapi solusinya memiliki rasa hack kepada saya.
Eksperimen 5
0, 0.853079823, 0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841,
0.676188057, 0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879,
0.802820512, 0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632,
0.954031849, 0.50925641, -0.50925641, -0.954031849, -0.696479632, -0.639141079,
-0.875637458, -0.814329015, -0.632264626, -0.802820512, -0.968738879, -0.765676034,
-0.664562475, -0.897723205, -0.928419527, -0.676188057, -0.695656841, -0.896260999,
-0.762429734, -0.603896038, -0.857877516, -0.853079823.
Saya melakukan interpolasi linier dan memperoleh 64 sampel dari yang sama. Mereka tampak seperti berikut:
Representasi domain frekuensi dibandingkan dengan output ideal yang diinginkan (Eksperimen pertama) adalah di bawah:
Saya telah menanggalkan bagian kedua dari ruang sampel sebagai komponen lipat setelah batas Nyquist. Ada sedikit pelemahan pada frekuensi yang diinginkan, tetapi lantai kebisingan ditambahkan di seluruh spektrum. Penjelasan?
Eksperimen 6
Sama seperti Eksperimen 5 , tetapi 32 sampel yang diinterpolasi.
Perbandingan domain frekuensi:
Rasio-rasio itu benar tetapi besarnya dibelah dua! Mengapa?
Jadi saya dapat menyimpulkan, dan saya mungkin salah (saya harap saya), bahwa jika jumlah sampel dalam periode gelombang lengkap bukan kekuatan 2, FFT yang sama tidak mengungkapkan apa pun tanpa semacam operasi , yang menghindari saya saat ini.
Karena saya hanya memiliki sedikit kontrol atas frekuensi sampling, Apa saja opsi yang terbuka untuk saya sehingga mendapatkan kembali nilai-nilai yang saya masukkan dalam domain waktu?
Jawaban:
Selamat datang di windowing. Tidak ada hubungannya dengan William G.
Penyembuhan yang paling mudah yang bekerja dengan brute force mengubur kesalahan dalam kebisingan dengan menggunakan rata-rata adalah untuk sampel sejumlah besar siklus sehingga kondisi batas tidak mendominasi.
Saya belum melihat hasil numerik Anda, tetapi:
Lihatlah grafik kedua dan ketiga Anda.
Bentuk gelombang yang Anda tampilkan adalah bentuk gelombang yang sedang dianalisis.
Contoh pertama memiliki 2 setengah siklus positif dan satu siklus negatif.
Saya berharap itu menjadi sangat kuat di harmonik ke-3 dan masuk akal sehingga dalam harmonik aneh lainnya dan mungkin dengan yang bahkan lebih rendah. Itu adalah perkiraan perkiraan yang intuitif.
Apa pun hasilnya, transformasi itu (dilakukan dengan benar) menggambarkan apa yang dilihatnya dan apa yang Anda lihat.
Saya berharap bahwa contoh kedua akan sangat sulit untuk diwakili dengan baik dan akan membutuhkan sejumlah besar komponen frekuensi tinggi. Ini 1/3 + ve, 1/3 -ve dan 1/3 nol. Ini shard untuk mengatakan bagaimana Anda akan dengan mudah mendapatkan output tangan kanan benar-benar nol tanpa sejumlah besar istilah frekuensi hampir sama tentang fase berlawanan membatalkan satu sama lain.
BEGITU
DFT atau FFT memberi tahu apa yang dilihatnya. Anda perlu memberinya bentuk gelombang integral dari sinyal yang menarik atau memperhitungkan titik akhir secara khusus. Ada seluruh bentuk seni yang didedikasikan untuk tugas yang terakhir. Istilah seperti windowing, cosine terangkat, hamming window (dan banyak lagi) akan memulai perjalanan Anda.
Wikipedia - windowing Cooley Hann Lanczos Hamming Blackman Kaiser Nutttall dan banyak teman :-)
Mungkin bermanfaat
Instrumen Nasional dan lagi di sini
Analisis spektrum DFT
sumber
Hasil FFT sebenarnya mengungkapkan segala sesuatu tentang frekuensi yang disuntikkan asli. Tetapi karena frekuensi yang disuntikkan tidak tepat secara periodik dalam panjang apertur FFT, frekuensi telah dilebur ke dalam bentuk gelombang Sinc karena jendela yang berhubungan dengan non-periodik ini, dan kemudian disampel ulang. Untuk mendapatkan frekuensi asli kembali, Anda mungkin perlu mendekonvolusi, menginterpolasi, dan mengubah skala berdasarkan panjang FFT.
sumber
Ini bukan jawaban yang lengkap dengan cara apa pun, dan saya tidak berharap itu akan diterima, tetapi saya juga berpikir ada nilai pendidikan yang signifikan dalam respons ini.
Anda sebagian besar benar. FFT memanfaatkan simetri sampel frekuensi di sepanjang lingkaran unit di bidang-z:
Jika jumlah sampel Anda adalah kekuatan 2, seperti yang ditunjukkan di atas, Anda dapat melihat simetri melintasi sumbu nyata dan sumbu imajiner. Pada dasarnya apa yang dilakukan FFT adalah menggunakan simetri ini untuk meruntuhkan sampel ke 1 kuadran (atau kurang? Tidak yakin detail dari simetri ini) dari lingkaran unit. Ini berarti FFT hanya perlu melakukan sejumlah kecil perhitungan, relatif terhadap seluruh rentang frekuensi.
Yang dapat Anda lakukan dengan zero-padding adalah meningkatkan resolusi FFT dengan menambahkan nol untuk menghasilkan daya 2 sampel yang lebih tinggi. Simetri masih ada, hanya ada lebih banyak sampel yang dikemas dalam lingkaran unit sekarang.
Jadi jika Anda TIDAK memiliki kekuatan 2, FFT yang kurang kuat tidak akan membebani Anda, dan Anda dapat mengalami alias dalam output Anda.
sumber