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

 
 
 
Reply to this topicStart new topic
> Усреднение БПФ, Как реализовать
ivan219
сообщение Nov 23 2008, 17:21
Сообщение #1


Местный
***

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



В одной программе можно като усреднить БПФ и зделать из этого:

Вот это:


Как реализовать такоеже???

Сообщение отредактировал ivan219 - Nov 23 2008, 17:22
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 24 2008, 08:10
Сообщение #2





Guests






Цитата(ivan219 @ Nov 23 2008, 20:21) *
В одной программе можно като усреднить БПФ и зделать из этого:
..
Как реализовать такоеже???


Если уже есть посчитанные отсчеты БПФ, то можно скользящим усреднением.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Nov 24 2008, 19:31
Сообщение #3


Местный
***

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



Это как???
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Nov 24 2008, 19:46
Сообщение #4


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Посмотрите, как это сделано в спектроанализаторах. Agilent, Advantech и т.п. В руководствах по эксплуатации режим Averaging. Идейно - в предположении постоянства СПМ вычисляется среднее арифметическое для каждого значения частоты.

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

Успехов.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Nov 24 2008, 20:55
Сообщение #5


Местный
***

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



Я пробовал брать число выборок в 4 раза больше чем БПФ потом в цикле делал сложение этих 4 БПФ и делил на 4 но в итоге практически ничего не изменилось sad.gif
Код
FFT(Ar1, 1024);
FFT(Ar2, 1024);
FFT(Ar3, 1024);
FFT(Ar4, 1024);

for I := 0 to 1023 do
begin
  PAr1[I] := Sqrt(Sqr(Ar1[I * 2]) + Sqr(Ar1[I * 2 + 1]));
  PAr2[I] := Sqrt(Sqr(Ar2[I * 2]) + Sqr(Ar2[I * 2 + 1]));
  PAr3[I] := Sqrt(Sqr(Ar3[I * 2]) + Sqr(Ar3[I * 2 + 1]));
  PAr4[I] := Sqrt(Sqr(Ar4[I * 2]) + Sqr(Ar4[I * 2 + 1]));
end;

for I := 0 to 1023 do
PAr1[I] := (PAr1[I] + PAr2[I] + PAr3[I] + PAr4[I]) / 4;


Сообщение отредактировал ivan219 - Nov 24 2008, 21:04
Go to the top of the page
 
+Quote Post

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

 


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


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