ViKo 1 15 октября, 2013 Опубликовано 15 октября, 2013 · Жалоба Окна имеют коэффициент ослабления, показывающий, во сколько раз при БПФ будет отличаться постоянная составляющая, по сравнению с прямоугольным окном. Но при этом значения всех остальных спектральных составляющих тоже изменяются. Как можно верить этим окнам? И, вообще, ДПФ? Я, правда, экспериментировал с 16-точечным БПФ. Подал точно рассчитанный по формуле сигнал, с частотами, точно укладывающимися в размер БПФ. Поэтому прямоугольное окно дает мне точные амплитуды спектральных составляющих. Остальные же окна выдают амплитуды, отличающиеся в несколько раз от поданных. Может, при размере БПФ 1024 такого явления не будет? Сомневаюсь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 8 16 октября, 2013 Опубликовано 16 октября, 2013 · Жалоба Окна имеют коэффициент ослабления, показывающий, во сколько раз при БПФ будет отличаться постоянная составляющая, по сравнению с прямоугольным окном. Но при этом значения всех остальных спектральных составляющих тоже изменяются. Как можно верить этим окнам? И, вообще, ДПФ? Я, правда, экспериментировал с 16-точечным БПФ. Подал точно рассчитанный по формуле сигнал, с частотами, точно укладывающимися в размер БПФ. Поэтому прямоугольное окно дает мне точные амплитуды спектральных составляющих. Остальные же окна выдают амплитуды, отличающиеся в несколько раз от поданных. Может, при размере БПФ 1024 такого явления не будет? Сомневаюсь. FFT c окнами это всего лишь банк фильтров на картинке по ссылке https://ccrma.stanford.edu/~jos/sasp/Downsa...ilter_Bank.html Окно - ИХ КИХ ФНЧ. Хотите точно амплитуду синуса мерить, используйте фильтры с плоскими вершинами АЧХ перекрывающимися, так называемые flat top window, в общем обсуждалось уже на форуме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 октября, 2013 Опубликовано 16 октября, 2013 · Жалоба Хотите точно амплитуду синуса мерить, используйте фильтры с плоскими вершинами АЧХ перекрывающимися, так называемые flat top window, в общем обсуждалось уже на форуме. У меня есть окно FlatTop. Для 16-точечного БПФ тоже сильно врет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 8 16 октября, 2013 Опубликовано 16 октября, 2013 · Жалоба У меня есть окно FlatTop. Для 16-точечного БПФ тоже сильно врет. Ну так всё в ваших руках, в один фильтр попадает несколько гармоник, имеем соответствующий результат, амплитудой отдельной гармоники это не является. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 6 17 октября, 2013 Опубликовано 17 октября, 2013 · Жалоба Чтобы получать правильный ответ с окнами, нужно брать корень из суммы квадратов некоторой части отсчетов около рассчитываемой гармоники. Если хвосты от гармоник перекрываются, то точный расчет невозможен. Сколько брать отсчетов - зависит от формы окна и требуемой точности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 17 октября, 2013 Опубликовано 17 октября, 2013 · Жалоба Маленькое примечание. Есть некоторые методические тонкости, которые почему-то все забывают. 1) ПФ от сигнала конечной длительности вычисляется в предположении, что это и был период образа сигнала. Это не так, это первое. Склейте хотя бы имеющуюся выборку с собой и увидите, от чего берете ПФ. 2) Наложение окна во временной области приводит к свертке ПФ сигнала и окна в спектральной. Но это не означает, что мы просто отфильтровали целиком все ПФ сигнала при помощи некоего фильтра. ПФ это расчет по каждой частотной компоненте и именно каждая компонента фильтруется оконной функцией, вычисленной для данной компоненты. Иначе окна не улучшали бы ПФ в полосе сигнала. Типа резюме: способы с наложением окон хороши, но только для выборок статистически определенных сигналов. На детерминированных сигналах они тоже работают, но совсем иначе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 октября, 2013 Опубликовано 18 октября, 2013 · Жалоба Я именно на целом количестве периодов и экспериментировал (вместо нулей подставлял числа - амплитуды). Окна для того и нужны, чтобы уменьшить последствия непериодичности. void Sig_load(void) { volatile float *pSig = Sig; for (uint32_t i = 0; i < FFT_N; i++) { *pSig++ = 1 + 0 * sin(1 * i * 2 * PI / FFT_N) + 0 * sin(2 * i * 2 * PI / FFT_N + 3 * PI / 4) + 0 * sin(4 * i * 2 * PI / FFT_N); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба Сделал, что мог. Использую Matlab. Окна по умолчанию получаются симметричными, что мне нравится. Результат расчетов выводится в файл, который включу в проект. Только запятую лишнюю в конце каждого массива нужно удалить. FFT_N = 8; ... fid = fopen('FFT_Windows.h', 'w'); fprintf(fid, '/* Hann Window */\n'); fprintf(fid, 'static const float WindHann[] = {\n'); fprintf(fid, ' %E, %E, %E, %E,\n', WindHann); fprintf(fid, '};\n\n'); ... fprintf(fid, '};\n\n'); fclose(fid); Поможите, люди добрые, убрать запятую в конце массива в текстовом файле, созданном этим скриптом! В языке C она лишняя. Если сложно, то не надо. :rolleyes: Руками удалю. Но, может, есть элегантный способ? Сам придумал. fseek(fid, -2, 0); fprintf(fid, '\n};\n'); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться