Fast Fourier mentransformasikan - jumlah non-integer siklus dalam aperture FFT

15

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:

  1. 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.
  2. 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:dosa(2nπ/64)3rd5th7th9th11th

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:

Domain waktu Waveform 64 sampel periode 64

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

masukkan deskripsi gambar di sini

Sejauh ini baik.


Eksperimen 2:

Input Domain Waktu

dosa(2nπ/41)3rd5th7th9th11th

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:

masukkan deskripsi gambar di sini

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

masukkan deskripsi gambar di sini

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:

masukkan deskripsi gambar di sini

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

masukkan deskripsi gambar di sini

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:

masukkan deskripsi gambar di sini

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

masukkan deskripsi gambar di sini

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:

masukkan deskripsi gambar di sini

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:

masukkan deskripsi gambar di sini

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

3rd5th7th9th11th

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:

masukkan deskripsi gambar di sini

Representasi domain frekuensi dibandingkan dengan output ideal yang diinginkan (Eksperimen pertama) adalah di bawah:

masukkan deskripsi gambar di sini

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.

masukkan deskripsi gambar di sini

Perbandingan domain frekuensi:

masukkan deskripsi gambar di sini

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?

Vaibhav Garg
sumber
Alih-alih memposting daftar besar angka, bisakah Anda memposting grafik dari output DFT? Agak sulit untuk mendapatkan gambaran kasar tentang output hanya sebagai daftar besar angka.
Nama Palsu
Apakah Anda ingin grafik besaran (Nilai absolut)?
Apakah itu baik sekarang?
Saya pikir windowing tidak berfungsi dengan baik hanya dalam satu periode, seperti DFT lebih dari 1 periode tanpa windowing. Tidak ada jejak sinyal asli Anda.
1
Saya tidak yakin apa yang Anda maksud dengan hadiah itu. Saya hanya melihat tumpukan besar plot dengan beberapa komentar yang tersebar dan pertanyaan samar. Memahami seluk-beluk DFT dan windowing akan membutuhkan setidaknya beberapa studi teoritis di DSP. Saya akan merekomendasikan buku pengantar Lyons . Kedua, apa pertanyaan spesifik Anda tentang implementasi windowing? Ini adalah teknik sederhana, dan Anda akan memahami cara terbaik untuk menerapkannya dalam sistem Anda yang terbatas.
Jason R

Jawaban:

12

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
Yang ketiga sepertiga dari bentuk gelombang ketiga telah diatur ke nol secara paksa-di excel di sini, dan di firmware selama implementasi.
5
Memaksa bagian dari sinyal ke nol hanya akan mem-window data dengan persegi panjang yang lebih pendek, yang hanya akan memadukan hasilnya dengan fungsi Sinc yang lebih luas.
hotpaw2
@VaibhavGarg - Angka 0 ada di spreadsheet dan di grafik Anda. Jadi saya berasumsi mereka ada dalam analisis Anda. Jika demikian, maka komentar umum berlaku. Jika tidak maka Anda perlu mengubah apa yang Anda tampilkan.
@RussellMcMahon Yup- Saya setuju.
Windowing jumlah integer periode menyelaraskan nol sinc ke spasi harmonik, yang mencegah kebocoran antara harmonik ketika spektrum jendela berbelit-belit. Berikut adalah DFT 1024-point (diinterpolasi dengan zero padding) untuk percobaan 2 & 3 (yaitu jendela 64-titik persegi panjang vs 41-point persegi panjang jendela). Nilai ideal diplot sebagai titik biru. Eksperimen 2 menunjukkan kebocoran spektral (terutama pada harmonisa genap yang seharusnya nol), tetapi eksperimen 3 benar pada harmonik.
Eryk Sun
7

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.

hotpaw2
sumber
Bisakah Anda menggambarkan 3 langkah ini? Saya dapat mengirimi Anda file excel dengan sampel asli untuk dimainkan jika Anda mau.
6

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.

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.

Anda sebagian besar benar. FFT memanfaatkan simetri sampel frekuensi di sepanjang lingkaran unit di bidang-z:

Lingkaran Unit Generik

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.

kevlar1818
sumber