Trasformata di Fourier veloce - numero non intero di cicli nell'apertura FFT


15

Ci sono alcuni eccellenti thread di discussione e risposte su questo sito (eletronics.se) sulla teoria delle trasformazioni di Fourier. Ho provato a implementare lo stesso in uno strumento di simulazione (MS Excel :)).

Ho alcuni problemi di interpretazione e implementazione riguardo allo stesso. Sto cercando di analizzare una forma d'onda di tensione di 50 Hz. Tuttavia, i dati seguenti sono appena generati dati fittizi che provano a stabilire un framework concettuale per l'implementazione su un processore a basso costo incorporato a 16 bit con memoria e potenza di elaborazione limitata.


ETA (maggio 30,2012)

TL; versione DR:

Inutile dire che su electronics.se ma sto usando un processore integrato con memoria e potenza di elaborazione limitata.

Ci sono alcune domande che sono ancora senza risposta:

  1. Come vengono eseguite le finestre sui campioni che ho senza aumentare significativamente l'impronta di memoria dell'algoritmo? Vorrei che queste fossero una descrizione di base passo dopo passo, dato che sono abbastanza nuovo in DSP.
  2. Perché le magnitudini sono state dimezzate quando ho interpolato 41 campioni per ricavarne 32, ma sono rimasti così com'erano (tranne alcuni rumori) quando li ho interpolati per derivare 64?

Sto dichiarando una generosità sulla domanda con l'augurio di ottenere delle risposte eccellenti che sono utilizzabili per un principiante in DSP.


Esperimento 1:

Ingresso nel dominio del tempo

Ho generato un'onda sinusoidale usando per generare 64 campioni. Ho poi aggiunto il 30% 3 r d armoniche, 20% 5 t h armoniche, 15% 7 t h armoniche, 10% 9 t h armonica, e 20% 11 t h armoniche. Ciò ha portato a questi esempi:peccato(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

E questa forma d'onda:

Periodo d'onda Forma d'onda 64 campioni periodo 64

Ho preso un DFT di questi campioni basato su un algoritmo Radix 2 e ho ottenuto questi valori:

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

Prendendo i valori assoluti dei numeri complessi sopra come rapporto rispetto al fondamentale (2o valore) e ignorando le informazioni sulla fase (se ce n'erano), ho ottenuto la grandezza dei componenti armonici iniettati esattamente come iniettata.

Rappresentazione del dominio di frequenza

inserisci qui la descrizione dell'immagine

Fin qui tutto bene.


Esperimento 2:

Ingresso nel dominio del tempo

peccato(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 

E questa forma d'onda:

inserisci qui la descrizione dell'immagine

Ho preso un DFT di questi campioni basato su un algoritmo Radix 2 e ho ottenuto questi valori:

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

Rappresentazione del dominio di frequenza

inserisci qui la descrizione dell'immagine

Le magnitudini dei numeri complessi sopra non rivelano nulla che io possa dedurre dai valori iniettati nel dominio del tempo.


Esperimento 3

Ingresso dominio temporale:

Ora ho preso la stessa forma d'onda e zero la ho imbottita, cioè ho impostato tutti i campioni oltre il 41 a zero. Quindi quanto segue è l'input nel dominio del tempo:

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

E la forma d'onda:

inserisci qui la descrizione dell'immagine

Ho preso un DFT di questi campioni basato su un algoritmo Radix 2 e ho ottenuto questi valori:

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 

Rappresentazione del dominio di frequenza

inserisci qui la descrizione dell'immagine

Ancora una volta, le magnitudini dei numeri complessi sopra non rivelano nulla che io possa dedurre dai valori iniettati nel dominio del tempo.


ETA Dato che le risposte qui mi hanno indicato le finestre, ho fatto un altro esperimento e ho ottenuto i seguenti risultati dopo molte false partenze.

Esperimento 4

Rappresentazione nel dominio del tempo

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

Sembra:

inserisci qui la descrizione dell'immagine

Coefficienti di Hamming Window

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

Assomiglia a questo

inserisci qui la descrizione dell'immagine

Il loro prodotto (sarebbe solo un prodotto semplice?)

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

Assomiglia a:

inserisci qui la descrizione dell'immagine

Rappresentazione del dominio di frequenza

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

Assomiglia a questo:

inserisci qui la descrizione dell'immagine

Questi risultati sono validi? Perché ancora non mi sembra di arrivare da nessuna parte!


Ho fatto altri due esperimenti e sembra essere incredibilmente vicino ai risultati previsti, ma la soluzione ha la sensazione di un hack per me.

Esperimento 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.

Ho fatto un'interpolazione lineare e ne ho derivato 64 campioni. Sembravano i seguenti:

inserisci qui la descrizione dell'immagine

La rappresentazione del dominio della frequenza rispetto all'output ideale desiderato (Primo esperimento) è come sotto:

inserisci qui la descrizione dell'immagine

Ho rimosso la seconda metà dello spazio campione mentre i componenti si piegano dopo il limite di Nyquist. C'è una leggera attenuazione alle frequenze di interesse, ma viene aggiunto un rumore di fondo in tutto lo spettro. Spiegazioni?


Esperimento 6

Come nell'esperimento 5 , ma 32 campioni interpolati.

inserisci qui la descrizione dell'immagine

Confronto dei domini di frequenza:

inserisci qui la descrizione dell'immagine

I rapporti sono corretti ma le dimensioni sono dimezzate! Perché?


Quindi posso dedurre, e potrei sbagliarmi (spero di esserlo), che se il numero di campioni in un periodo completo di forma d'onda non è una potenza di 2, la FFT dello stesso non rivela nulla senza un qualche tipo di operazione , che mi sfugge al momento.

Dal momento che ho pochissimo controllo sulla frequenza di campionamento, quali sono le opzioni che mi sono aperte in modo da recuperare i valori che ho iniettato nel dominio del tempo?


Invece di pubblicare un grande elenco di numeri, puoi pubblicare un grafico dell'output DFT? È piuttosto difficile avere un'idea approssimativa dell'output come solo un grande elenco di numeri.
Nome falso

Vorresti un grafico delle magnitudini (valori assoluti)?

Va bene adesso?

Penso che il windowing non funzioni bene in un solo periodo, proprio come il DFT in 1 periodo senza windowing. Non c'è traccia del tuo segnale originale.

1
Non sono sicuro di cosa stai ottenendo con la taglia. Vedo solo una grande pila di trame con alcuni commenti sparsi e vaghe domande. Comprendere le sottigliezze del DFT e il windowing richiederà almeno alcuni studi teorici in DSP. Consiglierei il libro introduttivo di Lyons . In secondo luogo, qual è la tua domanda specifica sull'implementazione delle finestre? È una tecnica semplice e capiresti meglio come implementarla nel tuo sistema vincolato.
Jason R,

Risposte:


12

Benvenuti a windowing. Niente a che fare con William G.

La cura più semplice che funziona con la forza bruta seppellendo gli errori nel rumore usando la media è campionare un gran numero di cicli in modo che le condizioni al contorno non prevalgano.

Non ho esaminato i tuoi risultati numerici, ma:

Guarda il tuo secondo e terzo grafico.
Le forme d'onda visualizzate sono le forme d'onda che vengono analizzate.
Il primo esempio ha 2 semicicli positivi e uno negativo.
Mi aspetterei che sia molto forte nella terza armonica e ragionevolmente così in altre strane armoniche e probabilmente con quelle molto più basse. È un'ipotesi intuitiva.
Qualunque sia il risultato, la trasformazione descrive (fatto correttamente) ciò che vede e ciò che vedi.

Mi aspetto che il secondo esempio sia immensamente difficile da rappresentare bene e che richiederebbe un gran numero di componenti ad alta frequenza. È 1/3 + ve, 1/3 -ve e 1/3 zero. È un frammento dire come otterresti facilmente l'uscita della mano destra totalmente zero senza un gran numero di termini ad alta frequenza quasi uguali di circa la fase opposta che si annullano a vicenda.

COSÌ

Il DFT o FFT racconta ciò che vede. È necessario alimentare le forme d'onda integrali del segnale di interesse o tenere conto in modo particolare dei punti finali. C'è un'intera forma d'arte dedicata a quest'ultimo compito. Termini come finestre, coseno rialzato, finestra a martello (e molti altri) ti inizieranno nel tuo viaggio.

Wikipedia - La vetrina di Cooley Hann Lanczos Hamming Blackman Kaiser Nutttall e molti amici :-)

Probabilmente utile

National Instruments e di nuovo qui

Analisi dello spettro DFT


Il terzo terzo della terza forma d'onda è stato impostato a zero forzatamente, in Excel qui e nel firmware durante l'implementazione.

5
Forzare una parte del segnale a zero farà solo una finestra rettangolare dei dati con un rettangolo più corto, che comporterà il risultato con una funzione Sinc più ampia.
hotpaw2,

@VaibhavGarg: gli 0 sono nel foglio di calcolo e sul grafico. Quindi ho pensato che fossero nella tua analisi. In tal caso, si applicano i commenti generali. Altrimenti devi cambiare ciò che mostri.

@RussellMcMahon Yup- Sono d'accordo.

La finestra di un numero intero di periodi allinea i valori di null del sinc alla spaziatura armonica, il che impedisce la dispersione tra le armoniche quando lo spettro della finestra è contorto. Ecco un DFT a 1024 punti (interpolato con riempimento zero) per gli esperimenti 2 e 3 (ovvero finestra rettangolare a 64 punti contro finestra rettangolare a 41 punti). I valori ideali sono tracciati come punti blu. L'esperimento 2 mostra una dispersione spettrale (specialmente alle armoniche pari che dovrebbero essere zero), ma l'esperimento 3 è corretto alle armoniche.
Eryk Sun,

7

I risultati della FFT in realtà rivelano tutto sulle frequenze iniettate originali. Ma poiché le frequenze iniettate non erano esattamente periodiche nella lunghezza dell'apertura FFT, le frequenze sono state contorte in forme d'onda Sinc a causa di questa finestra non correlata periodicamente, e quindi ricampionate. Per ripristinare le frequenze originali, potrebbe essere necessario deconvolgere, interpolare e riscalare in base alla lunghezza della FFT.


Potresti per favore illustrare i 3 passaggi? Posso inviarti il ​​file Excel con i campioni originali con cui giocare, se vuoi.

6

Questa non è una risposta completa in alcun modo, e non mi aspetto che venga accettata, ma penso anche che ci sia un significativo valore educativo in questa risposta.

Quindi posso dedurre, e potrei sbagliarmi (spero di esserlo), che se il numero di campioni in un periodo completo di forma d'onda non è una potenza di 2, la FFT dello stesso non rivela nulla senza un qualche tipo di operazione , che mi sfugge al momento.

Per lo più hai ragione. La FFT sfrutta la simmetria dei campioni di frequenza lungo il cerchio unitario nel piano z:

Cerchio unitario generico

Se il tuo numero di campioni è una potenza di 2, come mostrato sopra, puoi vedere la simmetria tra l'asse reale e l'asse immaginario. Essenzialmente ciò che FFT fa è usare questa simmetria per comprimere i campioni fino a 1 quadrante (o meno? Non sei sicuro dei dettagli di questa simmetria) del cerchio unitario. Ciò significa che la FFT deve fare solo un piccolo numero di calcoli, relativamente all'intera gamma di frequenze.

Quello che puoi fare con lo zero padding è aumentare la risoluzione della FFT aggiungendo zeri per produrre una potenza maggiore di 2 campioni. La simmetria è ancora lì, ora ci sono solo altri campioni impacchettati nel cerchio dell'unità.

Quindi, se NON hai una potenza di 2, gli FFT meno robusti non ti zero-pad per te e puoi imbatterti in aliasing nel tuo output.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.