Быстрое преобразование Фурье - нецелое число циклов в апертуре БПФ


15

На этом сайте (eletronics.se) есть несколько отличных дискуссионных тем и ответов по теории преобразований Фурье. Я попытался реализовать то же самое в инструменте моделирования (MS Excel :)).

У меня есть несколько вопросов интерпретации и реализации того же. Я пытаюсь проанализировать форму волны напряжения 50 Гц. Однако приведенные ниже данные являются просто сгенерированными фиктивными данными, пытающимися создать концептуальную основу для реализации на 16-битном встроенном недорогом процессоре с ограниченными ресурсами памяти и вычислительной мощности.


ЭТА (30 мая 2012 года)

TL; DR версия:

Само собой разумеется, что на электронике. Но я использую встроенный процессор с ограниченной памятью и вычислительной мощностью.

Здесь есть несколько вопросов, которые до сих пор остаются без ответа:

  1. Как выполняется управление окнами на сэмплах, которые у меня есть, без значительного увеличения объема памяти алгоритма? Я хотел бы, чтобы это было базовое пошаговое описание, так как я довольно новичок в DSP.
  2. Почему величины были уменьшены вдвое, когда я интерполировал 41 выборку, чтобы получить 32, но остались такими же, какими они были (за исключением некоторого шума), когда я интерполировал их, чтобы получить 64?

Я объявляю награду за этот вопрос с надеждой, что получу несколько отличных ответов, которые пригодятся новичку в DSP.


Эксперимент 1:

Временной домен

Я генерировал синусоидальную волну, используя для генерации 64 сэмплов. Затем я добавил 30% гармоники, 20% гармоники, 15% гармоники, 10% гармоники и 20% гармоники. Это привело к этим образцам:3 r d 5 т ч 7 т ч 9 т ч 11 т чsin(2nπ/64)3rd5tчас7Tчас9Tчас11Tчас

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

И эта форма волны:

Временная область Waveform 64 период выборки 64

Я взял ДПФ из этих образцов на основе алгоритма Radix 2 и получил эти значения:

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

Взяв абсолютные значения комплексных чисел, приведенных выше, в качестве отношения к фундаментальному (2-е значение) и игнорируя информацию о фазе (если она была), я получил величины введенных гармонических составляющих точно так же, как и введенные.

Представление частотной области

введите описание изображения здесь

Все идет нормально.


Эксперимент 2:

Временной домен

Я снова сгенерировал синусоидальную волну, используя для генерации 64 сэмплов. Почему 41? Потому что в реальной реализации мои микроконтроллеры дискретизируют АЦП на нескольких внешних генераторах, и у меня есть только несколько типов доступных кристаллов. Затем я добавил 30% гармоники, 20% гармоники, 15% гармоники, 10% гармоники и 20% гармоники. Это привело к этим образцам:3 r d 5 т ч 7 т ч 9 т ч 11 т чгрех(2Nπ/41)3рd5Tчас7Tчас9Tчас11Tчас

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 

И эта форма волны:

введите описание изображения здесь

Я взял ДПФ из этих образцов на основе алгоритма Radix 2 и получил эти значения:

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

Представление в частотной области

введите описание изображения здесь

Величины комплексных чисел, приведенных выше, не показывают ничего, что я могу вывести обратно на введенные значения во временной области.


Эксперимент 3

Вход во временную область:

Теперь я взял ту же форму сигнала и дополнил ее до нуля, то есть установил все сэмплы выше 41 на ноль. Таким образом, следующее является вводом во временной области:

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

И форма волны:

введите описание изображения здесь

Я взял ДПФ из этих образцов на основе алгоритма Radix 2 и получил эти значения:

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 

Представление частотной области

введите описание изображения здесь

Опять же, величины комплексных чисел, приведенных выше, не показывают ничего, что я могу вывести обратно на введенные значения во временной области.


ETA Так как ответы, приведенные здесь, указали мне на управление окнами, я провел еще один эксперимент и получил много результатов после многих неудачных попыток.

Эксперимент 4

Представление во временной области

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

Похоже:

введите описание изображения здесь

Коэффициенты окна Хэмминга

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

Выглядеть так

введите описание изображения здесь

Их продукт (это будет простой продукт?)

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

Выглядит как:

введите описание изображения здесь

Представление частотной области

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

Выглядеть так:

введите описание изображения здесь

Это достоверные результаты? Потому что я все еще, кажется, никуда не денусь!


Я провел еще два эксперимента и, кажется, дразнящим образом приблизился к намеченным результатам, но это решение кажется мне взломанным.

Эксперимент 5

3рd5Tчас7Tчас9Tчас11Tчас

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.

Я выполнил линейную интерполяцию и получил 64 сэмпла из одного и того же. Они выглядели так:

введите описание изображения здесь

Представление в частотной области по сравнению с желаемым идеальным выходом (первый эксперимент) выглядит так:

введите описание изображения здесь

Я удалил вторую половину пробного пространства, поскольку компоненты сгибаются после предела Найквиста. На интересующих частотах наблюдается небольшое затухание, но минимальный уровень шума добавляется по всему спектру. Объяснения?


Эксперимент 6

То же, что и в эксперименте 5 , но 32 интерполированных образца.

введите описание изображения здесь

Сравнение частотной области:

введите описание изображения здесь

Соотношения правильные, но величины уменьшены вдвое! Почему?


Таким образом, я могу сделать вывод, и я могу ошибаться (я надеюсь, что это так), что если число выборок за полный период сигнала не является степенью 2, то БПФ того же самого ничего не показывает без какой-либо операции , что ускользает от меня в данный момент.

Поскольку я очень мало контролирую частоту дискретизации, какие варианты открыты для меня, чтобы вернуть значения, которые я вводил во временной области?


Вместо того, чтобы опубликовать большой большой список чисел, вы можете опубликовать график вывода DFT? Достаточно сложно получить грубое представление о результате, как о большом списке чисел.
Фальшивое имя

Хотите график величин (абсолютные значения)?

Это нормально сейчас?

Я думаю, что управление окнами не работает хорошо только в течение одного периода, точно так же как DFT в течение 1 периода без управления окнами. Там нет следов вашего исходного сигнала.

1
Я не уверен, что вы получаете за награду. Я просто вижу большую кучу сюжетов с разбросанными комментариями и неопределенными вопросами. Понимание тонкостей DFT и управления окнами потребует хотя бы некоторого теоретического изучения DSP. Я бы порекомендовал вступительную книгу Лиона . Во-вторых, каков ваш конкретный вопрос по внедрению окон? Это простая техника, и вы лучше поймете, как реализовать ее в вашей ограниченной системе.
Джейсон Р

Ответы:


12

Добро пожаловать в окна. Ничего общего с Уильямом Г.

Самое простое лечение, которое работает с помощью грубой силы, скрывающей погрешности шума с помощью усреднения, - это выборка большого количества циклов, чтобы не преобладать граничные условия.

Я не смотрел на ваши численные результаты, но:

Посмотрите на свой второй и третий графики.
Сигналы, которые вы отображаете, являются сигналами, которые анализируются.
Первый пример имеет 2 положительных полупериода и один отрицательный.
Я ожидаю, что она будет очень сильной в 3-й гармонике и разумно таковой в других нечетных гармониках и, вероятно, с гораздо более низкими четными. Это интуитивное предположение.
Каким бы ни был результат, преобразование (сделано правильно) описывает, что он видит и что вы видите.

Я ожидаю, что второй пример будет очень трудно хорошо представить и потребует большого количества высокочастотных компонентов. Это 1/3 + ve, 1/3 -ve и 1/3 ноль. Трудно сказать, как легко получить абсолютно нулевой вывод правой руки без большого количества почти равных высокочастотных членов о противоположной фазе, компенсирующих друг друга.

ТАК

ДПФ или БПФ говорит, что он видит. Вам необходимо подать на него интегральные осциллограммы интересующего сигнала или принять особый учет конечных точек. Существует целая арт-форма, посвященная последней задаче. Такие термины, как окна, приподнятый косинус, окно Хэмминга (и многие другие) начнут вас в вашем путешествии.

Википедия - Кули Ханн Ланцош, Хемминг, Блэкмэн, Кайзер Наттталл и много друзей :-)

Наверное, полезно

Национальные инструменты и снова здесь

Анализ спектра DFT


Третья треть третьего сигнала была принудительно установлена ​​на ноль - в Excel здесь и во встроенном программном обеспечении во время реализации.

5
Приведение части сигнала в ноль будет просто прямоугольным окном данных с более коротким прямоугольником, который просто свернет результат с более широкой функцией Sinc.
hotpaw2

@VaibhavGarg - 0 в электронной таблице и на вашем графике. Поэтому я предположил, что они в вашем анализе. Если это так, то применяются общие комментарии. Если нет, то вам нужно изменить то, что вы показываете.

@RussellMcMahon Да, я согласен.

Оконное целое число периодов выравнивает нули канала с гармоническим интервалом, что предотвращает утечку между гармониками, когда спектр окна свернут. Вот DFT с 1024 точками (интерполированный с нулевым заполнением) для экспериментов 2 и 3 (то есть прямоугольное окно с 64 точками против прямоугольного окна с 41 точкой). Идеальные значения изображены в виде синих точек. Эксперимент 2 показывает спектральную утечку (особенно на четных гармониках, которые должны быть равны нулю), но эксперимент 3 верен на гармониках.
Eryk Sun

7

Результаты БПФ действительно показывают все об исходных введенных частотах. Но поскольку введенные частоты не были точно периодическими по длине апертуры БПФ, частоты были свернуты в сигналы Синка из-за этого непериодического оконного окна, а затем пересэмплированы. Чтобы вернуть исходные частоты, вам может потребоваться деконволюция, интерполяция и масштабирование в зависимости от длины БПФ.


Не могли бы вы проиллюстрировать 3 шага? Я могу прислать вам файл Excel с оригинальными семплами, чтобы поиграть с ними, если хотите.

6

Это ни в коем случае не полный ответ, и я не ожидаю, что он будет принят, но я также думаю, что в этом ответе есть значительная образовательная ценность.

Таким образом, я могу сделать вывод, и я могу ошибаться (я надеюсь, что это так), что если число выборок за полный период сигнала не является степенью 2, то БПФ того же самого ничего не показывает без какой-либо операции , что ускользает от меня в данный момент.

Вы в основном правы. БПФ использует преимущества симметрии частотных выборок вдоль единичного круга в плоскости z:

Общий блок Circle

Если ваше число выборок является степенью 2, как показано выше, вы можете увидеть симметрию как по реальной оси, так и по воображаемой оси. По сути, БПФ использует эту симметрию, чтобы свернуть выборки до 1 квадранта (или меньше - не уверен в деталях этой симметрии) единичного круга. Это означает, что БПФ должен выполнять небольшое количество вычислений относительно всего частотного диапазона.

Что вы можете сделать с заполнением нулями, так это увеличить разрешение FFT, добавив нули, чтобы получить более высокую мощность 2 выборок. Симметрия все еще там, теперь в единичном круге упаковано больше образцов.

Так что, если у вас нет степени 2, менее надежные БПФ не обойдутся вам в ноль, и вы можете столкнуться с псевдонимами в своем выводе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.