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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Оконное взвешивание, алгоритм применения
ivan219
сообщение Aug 12 2011, 13:10
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(Zelepuk @ Aug 12 2011, 15:58) *
всмысле как? Я просто умножаю на окно, делаю БПФ и затем смотрю что получилось. Нулевая гармоника - это постоянная составляющая.

Я новерное не так вырозился.
У вас есть идеальная синусоида. Как вы на ней считаете гармоники их же там нет! Кроме основоной. Поэтому я и спросил что вы делаете с сигналом что бы появились гармоники.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Aug 12 2011, 13:29
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(ivan219 @ Aug 12 2011, 17:10) *
Я новерное не так вырозился.
У вас есть идеальная синусоида. Как вы на ней считаете гармоники их же там нет! Кроме основоной. Поэтому я и спросил что вы делаете с сигналом что бы появились гармоники.


в матлабе делаю так >S = sin(2*pi*t*53)+0.5*sin(2*pi*t*53*5)+0.3*sin(2*pi*t*53*3)+0.1*sin(2*pi*t*53*4);

это сигнал содержащий 5-ю, 3-ю и 4-ю гармоники.

Цитата(bahurin @ Aug 12 2011, 16:52) *
нет я говорю о том уже в котором посте, что не надо никакие гармоники складывать, если вы хотите померить уровень сигнала, надо мерить его по максимуму при учете к-та ослабления окна. Если вам надо знать уровень n-ой гармоники относительно основной, то и учитывать ослабление окна не требуется при взятии отношения оно само исчезнет.


n-ю гармонику относительно основной мы меряем когда надо THD померять. А вот если интересует именно амплитуда конкретной гармоники в сравнении с амплитудой этой гармоники в исходном сигнале?

У меня получается для сигнала S = sin(2*pi*t*53)+0.5*sin(2*pi*t*53*5)+0.3*sin(2*pi*t*53*3)+0.1*sin(2*pi*t*53*4); THD = 0.59 - это известно.
Когда вычисляю THD через fixed point FFT то получается 0,57.

Сообщение отредактировал Zelepuk - Aug 12 2011, 13:50
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 12 2011, 18:35
Сообщение #18


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

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



Цитата(Zelepuk @ Aug 12 2011, 13:16) *
Как только к сигналу примешиваю 5-ю гармонику с амплитудой 0.5 от основной, то сразу же спектр, выдаваемый целочисленным алгоритмом в CBuilder сильно искажаться по всем гармоникам, в итоге получаю кучу помех в спектре, причём там где спектр должен быть нулевым.

Сделайте printf от сигнала и проверьте, нет ли в нём клиппирования.

А потом проверьте допустимый входной диапазон для вашего FFT.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Aug 13 2011, 10:43
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Позвольте не согласиться с т. bahurin по поводу того, что ничего не надо складывать. При наложении окна любая одиночная гармоника раскладывается на ряд бинов. Чтобы правильно подсчитать амплитуду исходной гармоники нужно взять корень квадратный из суммы квадратов бинов, на которые распалась гармоника. Далее нужно учесть коэффициент, даваемый окном, если только он не 1. Это зависит от нормировки оконной функции. Хотя в Вашем случае, когда нужно искать THD, т.е. отношение амплитуд, этот коэффициент сократится.
Полный алгоритм должен выглядеть следующим образом: ищем максимум основной гармоники в диапазоне 45-55 Гц, уточняем положение максимума по 3 или 5 точкам - ищем точное значение частоты (дробное). Вычисляем положения середин гармоник в бинах (целые, округленные). Вычисляем мощность основной гармоники как сумму квадратов бинов вокруг ее центра (сколько - зависит от окна, требуемой точности и уровня шумов). Вычисляем мощность остальных гармоник аналогично и складываем их. Затем делим одно на другое. Корень здесь брать не нужно, т.к. THD - отношение мощностей.
И еще одно замечание. Если используется комплексный FFT, то значение амплитуды бина - корень из суммы квадратов действительной и мнимой частей.
Go to the top of the page
 
+Quote Post
petrov
сообщение Aug 13 2011, 12:50
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Alex11 @ Aug 13 2011, 14:43) *
При наложении окна любая одиночная гармоника раскладывается на ряд бинов. Чтобы правильно подсчитать амплитуду исходной гармоники нужно взять корень квадратный из суммы квадратов бинов, на которые распалась гармоника.


Зачем это делать в случае окна

Цитата(Zelepuk @ Aug 10 2011, 18:35) *
использую flattopwin


?
Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Aug 13 2011, 14:11
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 25-10-09
Пользователь №: 53 195



Почему бы просто не найти 10 локальных максимумов в спектре и посчитать как отношение суммы квадратов амплитуд найденных 10-ти гармоник к квадрату амплитуды основного сигнала (для получения в процентах извлечь квадратный корень и умножить на 100)? Окно лучше использовать, конечно, иначе боковые лепестки спектра основного тона замаскируют гармоники. Возьмите окно с уровнем боковых лепестков -92 дБ (Блэкмана-Харриса, по-моему).
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 13 2011, 14:32
Сообщение #22


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

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



Цитата(Alex11 @ Aug 13 2011, 14:43) *
Корень здесь брать не нужно, т.к. THD - отношение мощностей.

THD — это отношение амплитуд, а не мощностей. Корень брать нужно.

bahurin правильно написал: при использовании flat-top окна суммировать бины не надо, достаточно взять амплитуду максимального. При использовании других окон — надо суммировать.

Единственное что может быть плохо у flat-top окна в данном случае — это уровень боковых лепестков: он всего -70 дБ. Поскольку нелинейные искажения могут быть на уровне -100 дБ, flat-top окна может оказаться недостаточно!
Go to the top of the page
 
+Quote Post
petrov
сообщение Aug 13 2011, 15:29
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Alexey Lukin @ Aug 13 2011, 18:32) *
Единственное что может быть плохо у flat-top окна в данном случае — это уровень боковых лепестков: он всего -70 дБ. Поскольку нелинейные искажения могут быть на уровне -100 дБ, flat-top окна может оказаться недостаточно!


Есть флаттопы на любое подавление

http://www.rssd.esa.int/SP/LISAPATHFINDER/...ysis/GH_FFT.pdf
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 13 2011, 17:34
Сообщение #24


Местный
***

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



Цитата(Alexey Lukin @ Aug 13 2011, 17:32) *
bahurin правильно написал: при использовании flat-top окна суммировать бины не надо, достаточно взять амплитуду максимального. При использовании других окон — надо суммировать.


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

Код
N = 512;

%время
t = 0:N-1;

%сигнал из 3 гармоник
s = 1.0*cos(2*pi*0.07*t)+0.5*cos(2*pi*0.153*t)+0.1*cos(2*pi*0.23*t);

%окно
w = blackmanharris(N);

%нормирую окно
w = N*w./sum(w);

%амплитудный спектр
S= abs(fft(s.*w))/N;

%частота
f = (0:N-1)/N;

% график
plot(f,S), grid;


Замените Блекмана с Харисом хоть флэттопом, хоть Хеммингом работать будет одинаково показывая амплитуду гармоники сигнала по максимальному локальному максимуму без всяких там суммирований и прочего шаманства.
Просто как бы я могу допустить, что можно суммированием вблизи гармоники сделать нормировку в частотной области аналогичную строке w = N*w./sum(w), но я не представляю как в частотной области сделать такую нормировку для сигнала со спектром не из одной гармоники а с более сложным спектром, например bpsk.
Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Aug 14 2011, 14:54
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 25-10-09
Пользователь №: 53 195



Цитата(bahurin @ Aug 13 2011, 21:34) *
Замените Блекмана с Харисом хоть флэттопом, хоть Хеммингом работать будет одинаково показывая амплитуду гармоники сигнала по максимальному локальному максимуму без всяких там суммирований и прочего шаманства.

До тех пор, пока уровень гармоник на 33 дБ ниже уровня основного тона можно и Хэмминга использовать. Прилично иметь уровень боковых лепестков окна на ~10 дБ ниже минимального измеряемого сигнала. При оценке относительных значений компонентов спектра нормировка не требуется. Точность относительных измерений при большом отношении сигнал/шум определяется зависимостью амплитуды спектральной компоненты от частоты. При частоте сигнала, когда за анализируемый интервал времени поступает целое число периодов + половина, амплитуда в соседних бинах будет одинакова и минимальна. Если частота дискретизации в целое число раз выше частоты сигнала, оценка амплитуды будет максимальна. Окно с большим подавлением боковых лепестков уменьшает эту разницу в оценках амплитуды.

Сообщение отредактировал Дмитрий_Б - Aug 14 2011, 14:55
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 14 2011, 15:25
Сообщение #26


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

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



Цитата(bahurin @ Aug 13 2011, 21:34) *
Вот матлаб код который показывает спектр амплитуд сигнала без всякого суммирования как он есть по максимуму.
Замените Блекмана с Харисом хоть флэттопом, хоть Хеммингом работать будет одинаково показывая амплитуду гармоники сигнала по максимальному локальному максимуму без всяких там суммирований и прочего шаманства.

Ваш код работает плохо, неточно. Вся суть flat-top окна — в том, что с ним (и только с ним!) можно оценивать амплитуду гармоник по спектру без суммирования бинов с достаточной точностью (порядка 0.01 дБ). Для остальных окон вы получите ошибки от 0.7 до 4 дБ, т.к. амплитуда будет зависеть от частоты сигнала (см. хотя бы статью, которую выше рекомендует petrov).

Правильный метод оценивания амплитуды для других окон — суммирование энергии бинов в пределах каждого пика.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 14 2011, 16:20
Сообщение #27


Местный
***

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



Цитата(Alexey Lukin @ Aug 14 2011, 18:25) *
Ваш код работает плохо, неточно. Вся суть flat-top окна — в том, что с ним (и только с ним!) можно оценивать амплитуду гармоник по спектру без суммирования бинов с достаточной точностью (порядка 0.01 дБ). Для остальных окон вы получите ошибки от 0.7 до 4 дБ, т.к. амплитуда будет зависеть от частоты сигнала (см. хотя бы статью, которую выше рекомендует petrov).

Правильный метод оценивания амплитуды для других окон — суммирование энергии бинов в пределах каждого пика.


1. Ну тогда просьба написать код который работает хорошо по вашему мнению. А так получается все суперэксперты а как доходит до подтверждения так лень 10 строчек в матлабе написать.
2. Как бы я не увидел ответа на вопрос что делать если сигнал не представлятся одной синусоидой, а имеет непрерывный по частоте спектр. В этом случае я не вижу возможности выделить отдельные бины (потому что их бесконечно много). Как тогда в этом случае оценивать спектр (если можно тоже с примером в матлабе плиз)?

Сообщение отредактировал bahurin - Aug 14 2011, 16:21
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 14 2011, 17:47
Сообщение #28


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

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



Цитата(bahurin @ Aug 14 2011, 20:20) *
1. Ну тогда просьба написать код который работает хорошо по вашему мнению. А так получается все суперэксперты а как доходит до подтверждения так лень 10 строчек в матлабе написать.

Я на Матлабе не шибко умею, может Петров вам подскажет? А что непонятно в моём объяснении?

Цитата(bahurin @ Aug 14 2011, 20:20) *
2. Как бы я не увидел ответа на вопрос что делать если сигнал не представлятся одной синусоидой, а имеет непрерывный по частоте спектр. В этом случае я не вижу возможности выделить отдельные бины (потому что их бесконечно много). Как тогда в этом случае оценивать спектр (если можно тоже с примером в матлабе плиз)?

Вообще непонятно, в чём вопрос. Если делается FFT, то спектр всегда дискретный. Если рассматривается бесконечный по времени сигнал, то спектр всегда непрерывный. От формы сигнала (синусоида/не синусоида) это не зависит.

Сообщение отредактировал Alexey Lukin - Aug 14 2011, 17:49
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 14 2011, 18:10
Сообщение #29


Местный
***

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



Цитата(Alexey Lukin @ Aug 14 2011, 20:47) *
Вообще непонятно, в чём вопрос. Если делается FFT, то спектр всегда дискретный. Если рассматривается бесконечный по времени сигнал, то спектр всегда непрерывный. От формы сигнала (синусоида/не синусоида) это не зависит.


Ну во первых это не совсем правильно. Если сигнал периодический (синусоида например), то его интеграл Фурье сводится к ряду фурье и спектр такого сигнала не является непрерывным, ибо состоит из набора гармоник в виде дельта импульсов.
Теперь я наверное скажу шокирующую новость, но спектр дискретного сигнала является на самом деле является непрерывным и периодическим. laughing.gif
Однако при вычислении мы не можем производить численный расчет на всем континууме частоты и времени, вот и пришлось во первых ограничить выборку дискретного сигнала для того чтобы количество отсчетов было конечным, и дискретизировать непрерывный спектр для того чтобы не вычислять на континууме частоты . Так получилось ДПФ. Но вот только дискретизация спектра привела к периодизации исходного дискретного сигнала, при которой могут возникнуть скачки по фазе, от одного периода повторения к другому, которые собственно и приводят к растеканию спектра.
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 14 2011, 18:26
Сообщение #30


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

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



Спасибо, просветили! a14.gif
Так в чём же вопрос заключается?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 23:37
Рейтинг@Mail.ru


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