Szybka transformata Fouriera - niecałkowita liczba cykli w otworze FFT


15

Istnieje kilka doskonałych wątków do dyskusji i odpowiedzi na tej stronie (eletronics.se) na temat teorii transformacji Fouriera. Próbowałem zaimplementować to samo w narzędziu do symulacji (MS Excel :)).

Mam kilka problemów interpretacyjnych i wdrożeniowych dotyczących tego samego. Próbuję przeanalizować przebieg napięcia o częstotliwości 50 Hz. Jednak poniższe dane to tylko wygenerowane dane pozorne próbujące ustalić koncepcyjne ramy dla implementacji w pamięci i ograniczonym mocą 16-bitowego wbudowanego taniego procesora.


ETA (30 maja 2012 r.)

Wersja TL; DR:

Nie trzeba mówić o elektronice.se, ale używam wbudowanego procesora o ograniczonej pamięci i mocy obliczeniowej.

Oto kilka pytań, na które wciąż nie ma odpowiedzi:

  1. W jaki sposób wykonuje się okienkowanie na próbkach, które mam, bez znacznego zwiększenia śladu pamięci algorytmu? Chciałbym, aby były to podstawowe opisy krok po kroku, ponieważ jestem całkiem nowy w DSP.
  2. Dlaczego wielkości zostały zmniejszone o połowę, kiedy interpolowałem 41 próbek w celu uzyskania 32, ale pozostały takie, jakie były (z wyjątkiem pewnego szumu), gdy interpolowałem je w celu uzyskania 64?

Ogłaszam nagrodę za to pytanie z nadzieją, że otrzymam doskonałe odpowiedzi, które można zastosować w przypadku nowicjusza w DSP.


Eksperyment 1:

Wejście w dziedzinie czasu

Wygenerowałem falę sinusoidalną używając do wygenerowania 64 próbek. Następnie dodano 30% 3 r d harmonicznych, 20% 5 t h harmonicznych, 15% 7 t h harmonicznych, 10% 9 T H harmonicznych i 20% 11 t h harmonicznych. Doprowadziło to do tych próbek:grzech(2)nπ/64)3)rre5th7th9th11th

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

I ten przebieg:

Fala czasowa 64 okres 64 okres próbki

Wziąłem DFT tych próbek w oparciu o algorytm Radix 2 i uzyskałem te wartości:

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

Biorąc wartości bezwzględne powyższych liczb zespolonych jako stosunek do podstawowej (2. wartości) i ignorując informacje o fazie (jeśli takie były), otrzymałem wielkości wstrzykiwanych składników harmonicznych dokładnie tak, jak wstrzyknięto.

Reprezentacja w dziedzinie częstotliwości

wprowadź opis zdjęcia tutaj

Jak na razie dobrze.


Eksperyment 2:

Wejście w dziedzinie czasu

Wygenerowałem ponownie sinusoidę za pomocą aby wygenerować 64 próbki. Dlaczego 41? Ponieważ w rzeczywistości moje mikrokontrolery ADC próbkują wielokrotność zewnętrznego oscylatora i mam tylko kilka rodzajów kryształów. Następnie dodałem 30% 3 rgrzech(2)nπ/41)3)rre5th7th9th11th

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 

I ten przebieg:

wprowadź opis zdjęcia tutaj

Wziąłem DFT tych próbek w oparciu o algorytm Radix 2 i uzyskałem te wartości:

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

Reprezentacja w dziedzinie częstotliwości

wprowadź opis zdjęcia tutaj

Wielkości powyższych liczb zespolonych nie ujawniają niczego , co mogę wywnioskować z wstrzykniętych wartości w dziedzinie czasu.


Eksperyment 3

Wejście w dziedzinie czasu:

Teraz wziąłem ten sam kształt fali i wypełniłem go zerami, tj. Ustawiłem wszystkie próbki powyżej 41 na zero. Oto więc dane wejściowe w dziedzinie czasu:

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

I przebieg:

wprowadź opis zdjęcia tutaj

Wziąłem DFT tych próbek w oparciu o algorytm Radix 2 i uzyskałem te wartości:

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 

Reprezentacja w dziedzinie częstotliwości

wprowadź opis zdjęcia tutaj

Ponownie, wielkości powyższych liczb zespolonych nie ujawniają niczego , co mogę wywnioskować z wstrzykniętych wartości w dziedzinie czasu.


ETA Ponieważ odpowiedzi tutaj wskazały mi na okienko, zrobiłem kolejny eksperyment i uzyskałem następujące wyniki po wielu fałszywych uruchomieniach.

Eksperyment 4

Reprezentacja w dziedzinie czasu

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

Wygląda jak:

wprowadź opis zdjęcia tutaj

Współczynniki okna Hamminga

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

Wygląda jak to

wprowadź opis zdjęcia tutaj

Ich produkt (czy byłby to tylko prosty produkt?)

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

Wygląda jak:

wprowadź opis zdjęcia tutaj

Reprezentacja w dziedzinie częstotliwości

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

Wygląda jak to:

wprowadź opis zdjęcia tutaj

Czy są to prawidłowe wyniki? Ponieważ nadal wydaje mi się, że nigdzie się nie dostaję!


Zrobiłem jeszcze dwa eksperymenty i wydaje mi się, że kusząco zbliża się do zamierzonych rezultatów, ale rozwiązanie wydaje mi się hackingiem.

Eksperyment 5

Tak więc w tym momencie ma 41 próbek w dziedzinie czasu stanowiące zasadniczą + 30% harmonicznych, 20% 5 t h harmonicznych, 15% 7 t h harmonicznych, 10% 9 T H3)rre5th7th9th11th

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.

Zrobiłem interpolację liniową i na tej podstawie wyprowadziłem 64 próbki. Wyglądały następująco:

wprowadź opis zdjęcia tutaj

Reprezentacja w dziedzinie częstotliwości w porównaniu z pożądanym idealnym wyjściem (pierwszy eksperyment) jest następująca:

wprowadź opis zdjęcia tutaj

Usunąłem drugą połowę przestrzeni na próbki, gdy elementy składają się po limicie Nyquista. Tłumienie częstotliwości jest niewielkie, ale w całym spektrum dodawana jest podłoga szumowa. Wyjaśnienia?


Eksperyment 6

To samo co eksperyment 5 , ale 32 próbki interpolowane.

wprowadź opis zdjęcia tutaj

Porównanie domen częstotliwości:

wprowadź opis zdjęcia tutaj

Proporcje są poprawne, ale wielkości są o połowę mniejsze! Dlaczego?


Mogę więc wywnioskować i mogę się mylić (mam nadzieję, że tak), że jeśli liczba próbek w pełnym okresie fali nie jest potęgą 2, FFT tego samego nie ujawnia niczego bez jakiejś operacji , to mi w tej chwili umyka.

Ponieważ mam bardzo małą kontrolę nad częstotliwością próbkowania, jakie są dla mnie dostępne opcje, aby odzyskać wartości, które wstrzyknąłem w dziedzinie czasu?


Zamiast tego opublikuj wielką, dużą listę liczb, czy możesz zamieścić wykres wyników DFT? Trudno jest z grubsza zorientować się, jaki jest wynik, jako duża lista liczb.
Fałszywe imię

Czy chcesz wykres wielkości (wartości bezwzględne)?

Czy to już w porządku?

Myślę, że okienkowanie nie działa dobrze tylko w jednym okresie, podobnie jak DFT w jednym okresie bez okienkowania. Nie ma śladu oryginalnego sygnału.

1
Nie jestem pewien, do czego zmierzasz z nagrodą. Widzę tylko duży stos fabuł z rozrzuconymi komentarzami i niejasnymi pytaniami. Zrozumienie subtelności DFT i okien wymaga co najmniej trochę teoretycznych badań w DSP. Polecam książkę wprowadzającą Lyons' . Po drugie, jakie jest Twoje konkretne pytanie dotyczące wdrożenia okienkowania? Jest to prosta technika i najlepiej zrozumieć, jak zaimplementować ją w ograniczonym systemie.
Jason R

Odpowiedzi:


12

Witamy w okienku. Nie ma nic wspólnego z Williamem G.

Najłatwiejszym lekarstwem, które działa brutalną siłą, zakopując błędy w hałasie za pomocą uśredniania, jest próbkowanie dużej liczby cykli, aby warunki brzegowe nie przeważały.

Nie spojrzałem na twoje wyniki liczbowe, ale:

Spójrz na drugi i trzeci wykres.
Wyświetlane kształty fal są analizowanymi kształtami fal.
Pierwszy przykład ma 2 dodatnie pół cykli i jeden ujemny.
Spodziewałbym się, że będzie bardzo silny w trzeciej harmonicznej i rozsądnie w innych dziwnych harmonicznych i prawdopodobnie z dużo niższymi parzystymi. To intuicyjny zgadywanka.
Niezależnie od wyniku transformacja jest (poprawnie wykonana) opisująca to, co widzi i co widzisz.

Spodziewałbym się, że drugi przykład byłby niezwykle trudny do przedstawienia i wymagałby dużej liczby komponentów wysokiej częstotliwości. Jest to 1/3 + ve, 1/3 -ve i 1/3 zero. Odłamek mówi, w jaki sposób można łatwo uzyskać całkowicie zerową moc wyjściową po prawej stronie bez dużej liczby prawie równych częstotliwości o zbliżonej częstotliwości, które wzajemnie się znoszą.

WIĘC

DFT lub FFT mówi to, co widzi. Musisz podać mu całkowe przebiegi sygnału zainteresowania lub zwrócić szczególną uwagę na punkty końcowe. Istnieje cała forma graficzna poświęcona temu ostatniemu zadaniu. Warunki takie jak okienkowanie, podniesiony cosinus, okno młotkowe (i wiele innych) rozpoczną Cię w podróży.

Wikipedia - okienkowanie Cooley Hann Lanczos Hamming Blackman Kaiser Nutttall i wielu przyjaciół :-)

Prawdopodobnie przydatne

National Instruments i znowu tutaj

Analiza widma DFT


Trzecia jedna trzecia trzeciej fali została tutaj ustawiona na zero, siłą w programie Excel, oraz w oprogramowaniu sprzętowym podczas implementacji.

5
Zmuszenie części sygnału do zera spowoduje po prostu prostokątne okno danych z krótszym prostokątem, co po prostu przekształci wynik w szerszą funkcję Sinc.
hotpaw2

@VaibhavGarg - Zera są w arkuszu kalkulacyjnym i na wykresie. Więc założyłem, że są w twojej analizie. Jeśli tak, to mają zastosowanie ogólne uwagi. Jeśli nie, musisz zmienić to, co pokazujesz.

@RussellMcMahon Tak - zgadzam się.

Osiągnięcie liczby całkowitej liczby okresów wyrównuje wartości zerowe cynku do odstępów harmonicznych, co zapobiega wyciekom między harmonicznymi, gdy widmo okna jest złożone. Oto 1024-punktowy DFT (interpolowany z wypełnieniem zerowym) dla eksperymentów 2 i 3 (tj. 64-punktowe okno prostokątne vs 41-punktowe okno prostokątne). Idealne wartości są wykreślane jako niebieskie kropki. Eksperyment 2 pokazuje wyciek widmowy (szczególnie przy parzystych harmonicznych, które powinny wynosić zero), ale eksperyment 3 jest prawidłowy przy harmonicznych.
Eryk Sun

7

Wyniki FFT faktycznie ujawniają wszystko o oryginalnych wstrzykiwanych częstotliwościach. Ponieważ jednak wstrzykiwane częstotliwości nie były dokładnie okresowe na długości apertury FFT, częstotliwości zostały splecione w kształty fali Sinc z powodu tego nieokresowego okienkowania, a następnie ponownie próbkowane. Aby odzyskać oryginalne częstotliwości, może być konieczne odkręcenie, interpolacja i przeskalowanie w oparciu o długość FFT.


Czy możesz zilustrować 3 kroki? Mogę przesłać Ci plik programu Excel z oryginalnymi próbkami do odtworzenia, jeśli chcesz.

6

W żadnym wypadku nie jest to pełna odpowiedź i nie oczekuję, że zostanie zaakceptowana, ale sądzę, że ta odpowiedź ma znaczną wartość edukacyjną.

Mogę więc wywnioskować i mogę się mylić (mam nadzieję, że tak), że jeśli liczba próbek w pełnym okresie fali nie jest potęgą 2, FFT tego samego nie ujawnia niczego bez jakiejś operacji , to mi w tej chwili umyka.

Masz w większości rację. FFT wykorzystuje symetrię próbek częstotliwości wzdłuż koła jednostek w płaszczyźnie Z:

Koło jednostki ogólnej

Jeśli twoja liczba próbek ma potęgę 2, jak pokazano powyżej, możesz zobaczyć symetrię zarówno osi rzeczywistej, jak i osi urojonej. Zasadniczo to, co robi FFT, polega na wykorzystaniu tej symetrii do zwinięcia próbek do 1 kwadrantu (lub mniej? Nie jestem pewien szczegółów tej symetrii) koła jednostkowego. Oznacza to, że FFT musi wykonać tylko niewielką liczbę obliczeń w odniesieniu do całego zakresu częstotliwości.

To, co możesz zrobić z wypełnianiem zerami, to zwiększenie rozdzielczości FFT przez dodanie zer, aby uzyskać wyższą moc 2 próbek. Nadal istnieje symetria, teraz w okręgu jednostki jest tylko więcej próbek.

Więc jeśli NIE masz mocy 2, mniej wytrzymałe FFT nie wyzerują dla ciebie i możesz natknąć się na aliasing w swoim wyniku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.