реклама на сайте
подробности

 
 
8 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Быстрое преобразование Фурье не для степени 2, как довести число отсчетов до стпени двойки
SPACUM
сообщение Sep 15 2011, 07:05
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(Sergey Makarov @ Sep 15 2011, 10:43) *
анализируемый сигнал является результатом оцифровки синусоидальных токов и напряжений во время частотного регулирования электроприводом,

Гармоники весьма малы. И дополнение нулями и ресемплинг по Фарроу с обычным FFT пожалуй неприемлемы по точности.
Можно попробовать 6 нулей слева + сигнал + 6 нулей справа и применить окно с низкими значениями по краям Натолла например.
Хотя для определения гармоник лучше использовать окно флаттоп.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 15 2011, 07:18
Сообщение #17


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



QUOTE (bookevg @ Sep 15 2011, 11:02) *
В книге Гольденберга 1985г на стр.220, если не выполняется условие 2^N дополняют массив нулями при спектральном анализе, но вот нет математического обоснования данного требования. Как я понимаю автор темы просит дать математич.обоснование разрешения дополнения массива до нужного размера какими то величинами.


Если отвлечься от того тонкого вопроса насколько ДПФ вообще соответствует физическому спектру сигнала.
То в книге Марпла "обосновыется" для значительного, кратного добавления нулей. В этом случае очевидно.
Смысл в том, что если изначально было N точек, то было и N ортогональных функций базиса, и по этому базису можно разложить всё что угодно, в том числе и те добавленые новые гармоники, соответствующие длине сигнала 2*N
Там в чистом виде синки взвешивают

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

QUOTE (Sergey Makarov @ Sep 15 2011, 10:43) *
первоначально хотел бы добавить что анализируемый сигнал является результатом оцифровки синусоидальных токов и напряжений во время частотного регулирования электроприводом, а преобразование фурье необходимо для анализа основных гармоник (например пяти) составляющих этот сигнал с исключением оставшихся, для последующей развертки и анализа сигнала


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

Если нужно промерять синусоиды с предельной точностью - то по ссылке
https://ccrma.stanford.edu/STANM/stanm/node3.html
исчерпывающее исследование
Go to the top of the page
 
+Quote Post
Sergey Makarov
сообщение Sep 15 2011, 08:08
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 19-10-05
Из: Россия, г.Чебоксары
Пользователь №: 9 845



как все сложно. Многое надо обновить в памяти, информацию к размышлению я уже получил от вас. Прежде чем я займусь реализацией алгоритма на ДСП, прошу ответьте на вопрос. Все таки для анализа сигнала посредством ДПФ необходимо брать отсчеты за период этого сигнала и доводить их степени двойки?или можно использовать фиксированное окно из 512 отсчетов полученный в результате оцифровки?
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Sep 15 2011, 08:22
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(bookevg @ Sep 15 2011, 11:02) *
дать математич.обоснование разрешения дополнения массива до нужного размера какими то величинами.

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

Сообщение отредактировал SPACUM - Sep 15 2011, 08:42


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
bahurin
сообщение Sep 15 2011, 08:28
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Почитайте для начала тута и здеся.
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Sep 15 2011, 09:04
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(Sergey Makarov @ Sep 15 2011, 12:08) *
Все таки для анализа сигнала посредством ДПФ необходимо брать отсчеты за период этого сигнала и доводить их степени двойки?или можно использовать фиксированное окно из 512 отсчетов полученный в результате оцифровки?

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

Сообщение отредактировал SPACUM - Sep 15 2011, 09:09


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 16 2011, 20:59
Сообщение #22


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Alexey Lukin @ Sep 15 2011, 03:55) *
Ничего не искажается! Наоборот, становится видно больше правильных деталей. А спектры некоторых сигналов (например, ядер фильтров) без дополнения их нулями перед ДПФ вообще некорректно рассматривать.

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

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

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

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

Цитата(fontp @ Sep 15 2011, 12:18) *
Для сингулярных спектров типа синусов (ширина спектра меньше бина) ДПФ в чистом виде (без спектральных окон) не является вообще адекватным инструментом анализа. Результат будет полностью зависить от того куда палка легла по отношению к бину ДПФ (не даст соврать гурукилер)

Гурукиллер Вас всегда поправит sm.gif
А вообще, что за дискриминация спектров? Все спектры имеют право встречаться в жизненных ситуациях.
Вот пример глюков "Что такое эффект размазывания"
http://psi-logic.narod.ru/fft/fft9.htm

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

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

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

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

Сообщение отредактировал GetSmart - Sep 16 2011, 23:16


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Sep 17 2011, 02:39
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Цитата(GetSmart @ Sep 17 2011, 00:59) *
ДПФ/БПФ всего лишь свёртка с синусом aka интеграл.

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


Цитата(GetSmart @ Sep 17 2011, 00:59) *
Ну а если мы зануляем часть функции, то с чего бы это результат интеграла функции не изменится?

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


Цитата(GetSmart @ Sep 17 2011, 00:59) *
В ДПФ/БПФ в конце идёт нормировка результата и она расчитана на 2^n, допустим 512 точек. Синус исходника был на интервале 500 точек.

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


Цитата(GetSmart @ Sep 17 2011, 00:59) *
Гораздо серьёзней, когда блоки дополняются нулями и из них выцепляются низшие гармоники. Тут уже идут значительные фазовые искажения в дополнение к амплитудным.

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


Цитата(GetSmart @ Sep 17 2011, 00:59) *
ИМХО, непрерывный спектр существует только у частотно-модулированных сигналов или недооцифрованных.

И этой тоже...
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 17 2011, 08:37
Сообщение #24


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Alexey Lukin @ Sep 17 2011, 07:39) *
ДПФ это не свёртка. ДПФ это умножение сигнала на матрицу, которая свёрткой не является.

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

Цитата(Alexey Lukin @ Sep 17 2011, 07:39) *
Дополнение сигнала нулями — это отнюдь не зануление части сигнала. Представьте...

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

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

Сообщение отредактировал GetSmart - Sep 17 2011, 08:55


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 17 2011, 10:30
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



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


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

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


Да нормально все в книжках пишут. Просто некоторые гурукиллеры читают их через 3 строки, а потом начинают с энтузиазмом преодолевать подводные камни.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 17 2011, 11:49
Сообщение #26


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



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

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

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

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

Сообщение отредактировал GetSmart - Sep 17 2011, 12:01


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Sep 17 2011, 15:26
Сообщение #27


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Цитата(GetSmart @ Sep 17 2011, 12:37) *
ДПФ это свёртка с синусом и косинусом. И интеграл само собой.

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


Цитата(GetSmart @ Sep 17 2011, 12:37) *
Я не писал зануление части сигнала. Не надо меня искажать.

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


Цитата(thermit @ Sep 17 2011, 14:30) *
Вообще-то ДПФ можно представить и так и эдак. Например БПФ винограда основан на представлении дпф как свертки и вычислении длинной свертки через короткие.

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

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

Вообще-то я неплохо знаком с исходниками ДПФ biggrin.gif И даже защитил диссертацию практически по спектральному анализу. Вы мне пытаетесь толковать про какую-то тривиальщину: нормировку коэффициентов, "интегралы", "запредельные гармоники"... А я вам про практический результат о форме спектра.
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 17 2011, 16:04
Сообщение #28


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(Alexey Lukin @ Sep 17 2011, 18:26) *
И даже защитил диссертацию практически по спектральному анализу.


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

Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Sep 17 2011, 16:11
Сообщение #29


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Слово "спектр" имеет множество значений, и одно из них — это результат ДПФ. Вы не согласны? Словосочетание "комплексный спектр" вам незнакомо?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 17 2011, 16:18
Сообщение #30


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Alexey Lukin @ Sep 17 2011, 20:26) *
Прежде чем укорять меня в невнимательном чтении книжек лучше сами с ними разберитесь для начала...

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

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

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

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

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

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

Серьёзно? А по постам и не скажешь sm.gif
Наверное суровые профессионалы считают, что тривиальщина вообще не стоит упоминания. И такие же профи пишут учебники.
Судя по этому
Цитата
Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот

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

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

"Правильные детали" заинтриговали sm.gif

Сообщение отредактировал GetSmart - Sep 17 2011, 16:56


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

8 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 11:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01534 секунд с 7
ELECTRONIX ©2004-2016