Искажение амплитуд спектральных составляющих после применения оконной функции

Ответить
Евгений
Сообщения: 4
Зарегистрирован: 20 окт 2016, 15:04

Искажение амплитуд спектральных составляющих после применения оконной функции

Сообщение Евгений » 20 окт 2016, 15:07

Привет!
После того, как домножаю исходный сигнал на окно искажаются амплитуды спектральных составляющих после БПФ.
Есть ли возможность скорректировать влияние окна?


Евгений
Сообщения: 4
Зарегистрирован: 20 окт 2016, 15:04

Re: Искажение амплитуд спектральных составляющих после применения оконной функции

Сообщение Евгений » 20 окт 2016, 16:54

Написал скрипт для демонстрации:

Код: Выделить всё

FFTSIZE = 1024;

fs = 16384;
fsine = 512;
n = 0:1:FFTSIZE;
A = 120;
phase = 0;

xx = A * cos(n * 2 * pi * fsine / fs + phase); 

mm = fftshift(fft(xx));
mag = abs(mm) ./ FFTSIZE;
mag = mag .* 2;

close all;
figure; stem(mag); title('Без окна');

xx = (hamming(length(xx)).') .* xx;
mm = fftshift(fft(xx));
mag = abs(mm) ./ FFTSIZE;
mag = mag .* 2;

figure; stem(mag); title('С окном');
Без окна амплитуда получается правильная (120 едениц).
С окном - ~2 раза меньше (но вблизи пиков на 512 Гц почти отсутствуют боковые лепестки).
Вложения
without window.png
without window.png (2.87 КБ) 2196 просмотров
hamming window.png
hamming window.png (2.94 КБ) 2196 просмотров

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 893
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Искажение амплитуд спектральных составляющих после применения оконной функции

Сообщение Бахурин Сергей » 21 окт 2016, 09:13

Это происходит потому что сумма отсчетов окна неравна меньше FFTSIZE. Необходима нормировка

Евгений
Сообщения: 4
Зарегистрирован: 20 окт 2016, 15:04

Re: Искажение амплитуд спектральных составляющих после применения оконной функции

Сообщение Евгений » 21 окт 2016, 14:48

Ага! Всё просто оказалось. Сделал такую нормировку и амплитуды получились одинаковые:

Код: Выделить всё

wnd = hamming(length(xx)).';
k = length(xx) / sum(wnd);
...
mag = mag .* k;

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость