Перейти к содержанию
    

Быстрое преобразование Фурье не для степени 2

анализируемый сигнал является результатом оцифровки синусоидальных токов и напряжений во время частотного регулирования электроприводом,

Гармоники весьма малы. И дополнение нулями и ресемплинг по Фарроу с обычным FFT пожалуй неприемлемы по точности.

Можно попробовать 6 нулей слева + сигнал + 6 нулей справа и применить окно с низкими значениями по краям Натолла например.

Хотя для определения гармоник лучше использовать окно флаттоп.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В книге Гольденберга 1985г на стр.220, если не выполняется условие 2^N дополняют массив нулями при спектральном анализе, но вот нет математического обоснования данного требования. Как я понимаю автор темы просит дать математич.обоснование разрешения дополнения массива до нужного размера какими то величинами.

 

Если отвлечься от того тонкого вопроса насколько ДПФ вообще соответствует физическому спектру сигнала.

То в книге Марпла "обосновыется" для значительного, кратного добавления нулей. В этом случае очевидно.

Смысл в том, что если изначально было N точек, то было и N ортогональных функций базиса, и по этому базису можно разложить всё что угодно, в том числе и те добавленые новые гармоники, соответствующие длине сигнала 2*N

Там в чистом виде синки взвешивают

 

В случае некратного дополнения на пальцах трудно сказать, но принцип примерно тот же - один базис выражается через другой. Если это расписать, то и получится, не то что доказательство, а представление сигнала через соответствующие "спектры"

 

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

 

Для сингулярных спектров типа синусов (ширина спектра меньше бина) ДПФ в чистом виде (без спектральных окон) не является вообще адекватным инструментом анализа. Результат будет полностью зависить от того куда палка легла по отношению к бину ДПФ (не даст соврать гурукилер)

Нужно использовать спектральные окна (и, возможно, добавление большого числа нулей и интерполяцию спектра, если нужно получить измерительную точность оценки частот и амплитуд)

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

Если просто посмотреть - достаточно добавить нулей и взвесить окном.

 

Если нужно промерять синусоиды с предельной точностью - то по ссылке

https://ccrma.stanford.edu/STANM/stanm/node3.html

исчерпывающее исследование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как все сложно. Многое надо обновить в памяти, информацию к размышлению я уже получил от вас. Прежде чем я займусь реализацией алгоритма на ДСП, прошу ответьте на вопрос. Все таки для анализа сигнала посредством ДПФ необходимо брать отсчеты за период этого сигнала и доводить их степени двойки?или можно использовать фиксированное окно из 512 отсчетов полученный в результате оцифровки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Ну все просто: ошибка = спектр обнуленного куска сигнала. Если обнуляется при переходе через нуль, то мало, а если на максимуме, то больше.

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

Изменено пользователем SPACUM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все таки для анализа сигнала посредством ДПФ необходимо брать отсчеты за период этого сигнала и доводить их степени двойки?или можно использовать фиксированное окно из 512 отсчетов полученный в результате оцифровки?

Да хоть нечетное число. Если у Вас есть алгоритм БПФ на это число отсчетов, то получите результат быстрее, если нет, то по точкам можете посчитать. Если вставите нули - получите ошибку в зависимости от того какой участок сигнала так представили.

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

Изменено пользователем SPACUM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего не искажается! Наоборот, становится видно больше правильных деталей. А спектры некоторых сигналов (например, ядер фильтров) без дополнения их нулями перед ДПФ вообще некорректно рассматривать.

Оставим в покое ядра фильтров.

Но по поводу "становится видно больше правильных деталей" очень любопытно.

 

ДПФ/БПФ всего лишь свёртка с синусом aka интеграл. Ну а если мы зануляем часть функции, то с чего бы это результат интеграла функции не изменится? В ДПФ/БПФ в конце идёт нормировка результата и она расчитана на 2^n, допустим 512 точек. Синус исходника был на интервале 500 точек. Значит ошибка нормировки 500/512 = 0,97656. Иногда это неважно, иногда очень важно. А уж если кто-то пожелает в разы увеличивать блок нулями в своих корыстных целях, то вообще мама не горюй.

 

Но это вообще-то пока ещё мелкий недостаток, который легко перенормируется. Гораздо серьёзней, когда блоки дополняются нулями и из них выцепляются низшие гармоники. Тут уже идут значительные фазовые искажения в дополнение к амплитудным. На 1-2-3 гармониках блока, хотя в зависимости от желаемой точности и на 10-20 (грубо говоря).

 

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

 

Для сингулярных спектров типа синусов (ширина спектра меньше бина) ДПФ в чистом виде (без спектральных окон) не является вообще адекватным инструментом анализа. Результат будет полностью зависить от того куда палка легла по отношению к бину ДПФ (не даст соврать гурукилер)

Гурукиллер Вас всегда поправит :)

А вообще, что за дискриминация спектров? Все спектры имеют право встречаться в жизненных ситуациях.

Вот пример глюков "Что такое эффект размазывания"

http://psi-logic.narod.ru/fft/fft9.htm

 

ИМХО, непрерывный спектр существует только у частотно-модулированных сигналов или недооцифрованных. Но у недооцифрованных это просто недостаток информации уже после оцифровки. Если взять исходный аналоговый сигнал и оцифровать его точнее, то спектр "очистится" и в пределе станет прерывным. Суть в том, что многие сигналы в идеале такие, но идеально их восстановить оцифровкой очень трудно и порой не нужно. А нужно понимать с какой точностью получился результат и от чего он зависит. То бишь с какой точностью получается результат при пользовании каким-то инструментом, например БПФ, да ещё и с добавлением нулей.

 

Чутьё мне подсказывает, что частотно-модулированные сигналы, возможно, могут тоже выродиться в прерывные, но уже по обратной причине. Из-за переоцифровки, то бишь когда длина блока равна бесконечности. Но это скорее математическая мутота, не имеющая практической ценности.

 

Upd.

Хотя есть ещё третий вариант непрерывного спектра "в жизненных ситуациях". Когда разные сигналы накладываются друг на друга. Даже если один из них является идеальным с прерывным спектром, то другие могут быть с непрерывным. В данном случае переоцифровка (в пределе) сигнала ситуацию не разрулит, т.к. предел ограничен "вредным" сигналом. Эта ситуация вообще чаще всего бывает. Идеальный ЦОС-овик понимая все нюансы всех этапов прохождения своего сигнала будет просто приближаться к мат.пределу точности при правильном использовании инструментов. Правильно понимая достоверность результата при этом.

 

Upd2

Я бы с удовольствием замутил разговор страниц на 50 на эту тему. Только съезжу в отпуск на Бора-Бора :)

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ДПФ/БПФ всего лишь свёртка с синусом aka интеграл.

ДПФ это не свёртка. ДПФ это умножение сигнала на матрицу, которая свёрткой не является.

 

 

Ну а если мы зануляем часть функции, то с чего бы это результат интеграла функции не изменится?

Дополнение сигнала нулями — это отнюдь не зануление части сигнала. Представьте, что у вас есть сигнал длины 512 точек и его копия, дополненная нулями до 1024 точек. ДПФ от второго сигнала будет совпадать с ДПФ от первого на сетке частот первого ДПФ. В этом смысле спектр не искажается. Но у второго ДПФ будет информация о сигнале на промежуточных частотах — результаты скалярных произведений с промежуточными частотами. Именно это я и называю полезными деталями. В случае, например, синусоидального сигнала эти промежуточные частотные отсчёты позволят вам более точно узнать частоту сигнала. А в случае фильтра — получить его АЧХ (которая, как известно, является непрерывной функцией частоты) в промежуточных точках по частоте, найти нули АЧХ и т.п.

 

 

В ДПФ/БПФ в конце идёт нормировка результата и она расчитана на 2^n, допустим 512 точек. Синус исходника был на интервале 500 точек.

Если дополнение нулями не кратное, то полученный спектр будет дискретной выборкой из непрерывного спектра исследуемого отрезка сигнала. Это может быть плохо или хорошо, в зависимости от задач. Чаще всего это хорошо, по тем же причинам, которые описаны выше: частотное разрешение анализа получается выше.

 

 

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

Что-то не понял мысли...

 

 

ИМХО, непрерывный спектр существует только у частотно-модулированных сигналов или недооцифрованных.

И этой тоже...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ДПФ это не свёртка. ДПФ это умножение сигнала на матрицу, которая свёрткой не является.

ДПФ это свёртка с синусом и косинусом. И интеграл само собой.

 

Дополнение сигнала нулями — это отнюдь не зануление части сигнала. Представьте...

Я не писал зануление части сигнала. Не надо меня искажать. Если функция ФФТ юзает 512 точек, из которых 500 присутствуют, остальные нулевые, то это есть зануление части функции. Равноценно тому, что было получено 512 действительных точек, а потом 12 было занулено. Эквивалентно потери части информации в функции 512 точек. Однако львиная доля информации ещё осталось. Результат, относительно случая с полным набором точек будет искажён. Насколько велики искажения - (0.01%...ХХ%) зависит от многих нюансов. Часть я описал.

 

Если что-то непоняли, бывает. Это неудивительно, т.к. в книжках многое не пишут чтобы не перегружать читателя и/или не вызывать у читателя какие-то сомнения. Но если понимаете "физику процесса", то сразу понимаете море подводных камней, причём там, где никто никаких сомнений в книжках не высказывал.

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Alexey Lukin:

ДПФ это не свёртка. ДПФ это умножение сигнала на матрицу, которая свёрткой не является.

 

Вообще-то ДПФ можно представить и так и эдак. Например БПФ винограда основан на представлении дпф как свертки и вычислении длинной свертки через короткие.

 

GetSmart:

в книжках многое не пишут чтобы не перегружать читателя и/или не вызывать у читателя какие-то сомнения.Но если понимаете "физику процесса", то сразу понимаете море подводных камней, причём там, где никто никаких сомнений в книжках не высказывал.

 

Да нормально все в книжках пишут. Просто некоторые гурукиллеры читают их через 3 строки, а потом начинают с энтузиазмом преодолевать подводные камни.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Да нормально все в книжках пишут. Просто некоторые гурукиллеры читают их через 3 строки, а потом начинают с энтузиазмом преодолевать подводные камни.

Где логика? 20 постов почти все утверждают, что от дополнения нулями результат не хуже. Это я так книжки читаю или это другие нахватались знаний не из книжек. Я зашёл чтобы поправить чужие заблуждения. И это моё мнение о том почему так происходит. Если бы в учебниках/книгах все нюансы/подводные камни были бы хотя бы обозначены, то таких глюков в рассуждениях было бы значительно меньше.

 

Upd.

Ещё более наглядное объяснение. ДПФ/БПФ в качестве результата даёт амплитуду/фазу гармоники интегрально за весь блок. Если в блоке 1/3 данных обнулена, то ессно интегральное значение амплитуды будет меньше на 1/3. Но ещё фишка в том, что это обнуление порождает "запредельные" гармоники, которых в исходном сигнале не должно было быть, то есть с частотой больше Fd/2 и меньше 1/Т. Именно они будут портить качество/достоверность результата уже в таком виде, что простая перенормировка не поможет.

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ДПФ это свёртка с синусом и косинусом. И интеграл само собой.

Повторю ещё раз: ДПФ это не свёртка. Откуда вы это взяли? Цитату из книжки привести можете? Вы могли прочитать, что "скользящее ДПФ — это набор свёрток". Могли прочитать, что "ДПФ можно выразить (вычислить) через свёртку". Но говорить, что "ДПФ это свёртка" — всё равно, что говорить, что "число пи — это сумма бесконечного ряда". Конечно, число пи можно вычислисть как сумму ряда, но это отнюдь не определение. Прежде чем укорять меня в невнимательном чтении книжек лучше сами с ними разберитесь для начала...

 

 

Я не писал зануление части сигнала. Не надо меня искажать.

Писали, и до сих пор пишете. Мы с вами просто с разных позиций говорим: вы считаете, что сигнал из 512 точек у вас был, а я считаю, что его никогда не было, а было только 500. Спорить бесполезно.

 

 

Вообще-то ДПФ можно представить и так и эдак. Например БПФ винограда основан на представлении дпф как свертки и вычислении длинной свертки через короткие.

Как я уже написал выше, представить-то можно, только это не есть определение. И в этом представлении сворачивается не исходный сигнал с синусами и косинусами, как пишет GetSmart, а другие сигналы.

 

Alexey Lukin, я кажется понял ваше непонимание процесса. Вы бы раскопали любой исходник ДПФ (не математическую формулу учебника, а код) особенно когда вычисляются не все гармоники, а только часть, что есть именно ДПФ, а не БПФ. И там очевидно, что гармоника идёт через нормированный интеграл. И если у входных данных функции (точнее у данных, принадлежащих гармонике) часть данных нулевая, то интеграл будет иметь меньшее значение, чем у полных данных. А соответственно и окончательный результат.

Вообще-то я неплохо знаком с исходниками ДПФ :biggrin: И даже защитил диссертацию практически по спектральному анализу. Вы мне пытаетесь толковать про какую-то тривиальщину: нормировку коэффициентов, "интегралы", "запредельные гармоники"... А я вам про практический результат о форме спектра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И даже защитил диссертацию практически по спектральному анализу.

 

Значит Вы должны понимать, что дпф это совсем не спектр.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слово "спектр" имеет множество значений, и одно из них — это результат ДПФ. Вы не согласны? Словосочетание "комплексный спектр" вам незнакомо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прежде чем укорять меня в невнимательном чтении книжек лучше сами с ними разберитесь для начала...

Взял уже любой исходник кода и разобрался. Или это непонимание из серии теоретика с практиком? Мне например гораздо важнее что практически происходит с дискретным сигналом, а не теоретически (точнее должно происходить). Теоретики любят черезмерно упрощать свои входные данные и особенно идеальность преобразований. А так же сувать везде бесконечность. Всё это особенно когда учат других. Как пример первые 5 постов здесь. Ну никто не догадался сказать о мало того что искажении амплитуды, но и о искажениях младших гармоник. Хотя какие гармоники ТС интересовали было не ясно, а значит вполне вероятно и младшие тоже.

 

Писали, и до сих пор пишете. Мы с вами просто с разных позиций говорим: вы считаете, что сигнал из 512 точек у вас был, а я считаю, что его никогда не было, а было только 500. Спорить бесполезно.

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

 

Как я уже написал выше, представить-то можно, только это не есть определение. И в этом представлении сворачивается не исходный сигнал с синусами и косинусами, как пишет GetSmart, а другие сигналы.

В данном случае определений можно дать множество одного и того же сложного действия. Хотя любопытно к какому определению апеллируете вы. (слово интересное - даже гугл не понял как правильно писать - аппелируете или апеллируете :biggrin: хотя инет = большая свалка)

 

И даже защитил диссертацию практически по спектральному анализу. Вы мне пытаетесь толковать про какую-то тривиальщину: нормировку коэффициентов, "интегралы", "запредельные гармоники"... А я вам про практический результат о форме спектра.

Серьёзно? А по постам и не скажешь :)

Наверное суровые профессионалы считают, что тривиальщина вообще не стоит упоминания. И такие же профи пишут учебники.

Судя по этому

Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот

Диссертации там, где вы защищали, принимают неглядя.

 

PS

Если вас не затруднит, то расскажите поподробней это

Ничего не искажается! Наоборот, становится видно больше правильных деталей

"Правильные детали" заинтриговали :)

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...