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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Цифровая фильтрация + БПФ
CTPEXHIH
сообщение Nov 9 2011, 14:14
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 9-11-11
Пользователь №: 68 213



Существует следующая задача: есть периодический сигнал с определенным уровнем шумов, частоту которого надо определить. Данный сигнал является сигналом с датчика вихревого расходомера. Ведущие мировые производители таких расходомеров (Yokogawa, например), применяет следующий алгоритм ЦОС: Преобразование Фурье входного сигнала -> преобразование Фурье коэффициентов КИХ-фильтра -> быстрая свертка КИХ-фильтра и сигнала -> обратное преобразование Фурье результатов свертки. То есть, они делают классическую цифровую фильтрацию входного сигнала. Затем определяется частота отфильтрованного от помех сигнала.

Вопрос в следующем: почему не определить частоту сигнала, сделав БПФ исходного сигнала с шумом, и приняв за частоту полезного сигнала частоту максимальной составляющей в спектре?

У меня есть предположение, что из-за того, что частоты на спектре дискретны, так не получится определить частоту, лежащую между частотами спектра. Например, разложили сигнал по частотам 1, 2, 3, 4, ... Гц. Тогда по спектру не определить частоту 3,3 Гц, то есть определить-то можно, но пик будет на 3 Гц, а 3,3 в спектре просто нет.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 9 2011, 16:11
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(CTPEXHIH @ Nov 9 2011, 18:14) *
У меня есть предположение, что из-за того, что частоты на спектре дискретны, так не получится определить частоту, лежащую между частотами спектра. Например, разложили сигнал по частотам 1, 2, 3, 4, ... Гц. Тогда по спектру не определить частоту 3,3 Гц, то есть определить-то можно, но пик будет на 3 Гц, а 3,3 в спектре просто нет.

В таких случаях берут не частоту масимальной амплитуды, а находят центр тяжести в окружении двух соседних частот - тогда получится искомая 3,3.
Go to the top of the page
 
+Quote Post
AlexU
сообщение Nov 10 2011, 08:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-05-06
Пользователь №: 17 639



Цитата(CTPEXHIH @ Nov 9 2011, 17:14) *
Вопрос в следующем: почему не определить частоту сигнала, сделав БПФ исходного сигнала с шумом, и приняв за частоту полезного сигнала частоту максимальной составляющей в спектре?

Уже сделали 3 года назад для питерских расходомеров. laughing.gif
Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Nov 11 2011, 14:25
Сообщение #4


Местный
***

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



Цитата(Xenia @ Nov 9 2011, 20:11) *
В таких случаях берут не частоту масимальной амплитуды, а находят центр тяжести в окружении двух соседних частот - тогда получится искомая 3,3.

Оценка будет смещённой.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Nov 11 2011, 15:55
Сообщение #5


Гуру
******

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



По-хорошему нужно делать по нескольким точкам аппроксимацию оконной функцией и оттуда считать максимум. Тогда ответ точный.
Go to the top of the page
 
+Quote Post
CTPEXHIH
сообщение Nov 12 2011, 17:37
Сообщение #6





Группа: Новичок
Сообщений: 4
Регистрация: 9-11-11
Пользователь №: 68 213



Почему же тогда в описании к расходомерам Yokogawa описан алгоритм фильтрации и т.д., а не просто определение частоты по спектру? Почему они не определяют частоту сигнала тупо из спектра? Возможно, есть какие-то причины, по которым так делать нельзя? Зачем тогда применять цифровую фильтрацию КИХ, БИХ? Взял просто в спектре занулил все гармоники в полосе подавления и сделал ОБПФ и все, получил чистейший фильтрованный сигнал! НО так почему-то не делается, а придумали разные фильтры.

Сообщение отредактировал CTPEXHIH - Nov 12 2011, 17:37
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Nov 12 2011, 18:46
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(CTPEXHIH @ Nov 12 2011, 21:37) *
Почему же тогда в описании к расходомерам Yokogawa описан алгоритм фильтрации и т.д., а не просто определение частоты по спектру? Почему они не определяют частоту сигнала тупо из спектра? Возможно, есть какие-то причины, по которым так делать нельзя? Зачем тогда применять цифровую фильтрацию КИХ, БИХ? Взял просто в спектре занулил все гармоники в полосе подавления и сделал ОБПФ и все, получил чистейший фильтрованный сигнал! НО так почему-то не делается, а придумали разные фильтры.

так поступают, если сигнал не гармонический. Свёртка с опорным сигналом правильной формы даём максимально узкую взаимно корреляционную функцию, что увеличит отношение сигнал шум и сделает оценку частоты более точной.
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Nov 12 2011, 19:34
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Цитата(CTPEXHIH @ Nov 12 2011, 20:37) *
Почему они не Взял просто в спектре занулил все гармоники в полосе подавления и сделал ОБПФ и все, получил чистейший фильтрованный сигнал! НО так почему-то не делается, а придумали разные фильтры.

Если нужно восстановить сигнал, то лучше не занулять составляющие спектра,
а то после обратного Фурье сигнал будет содержать то чего не было на входе.
Эффект Гиббса.
Если сигнал не нужно восстанавливать, то для удобств дальнейшего обработки можно и занулить что-то.
Большого криминала тут не будет, но в это задаче не понятно что занулять, вы же не знаете где у вас изначально
в спектре сидит полезный сигнал. Не то занулите и не найдет, то что ищете.

А фильтры разные придумали для того чтобы подавить шумы обрабатываемого сигнала, спектр которых заведомо не пересекается со спектром
полезного сигнала, тем самым повысив соотношение сигнал/шум перед проведением ДПФ.
В спектре отфильтрованного сигнал легче обнаружить составляющие полезного сигнала.
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 13 2011, 02:01
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Вообще при вычислении частоты по спектру ОБПФ не нужно, конечно.
Но возможно, они сделали БПФ-фильтрацию, восстановили сигнал во временной области, а потом применили классический счетный частотомер: усиление-ограничение сигнала и подсчет числа импульсов в заданный промежуток времени? Тут вам и фильтрация в частотной области, и фактическое усреднение во временной, может, так получается самый точный результат.

Сообщение отредактировал V_G - Nov 13 2011, 02:03
Go to the top of the page
 
+Quote Post
CTPEXHIH
сообщение Nov 13 2011, 08:40
Сообщение #10





Группа: Новичок
Сообщений: 4
Регистрация: 9-11-11
Пользователь №: 68 213



А как быть с тем, что при разложении сигнала в спектр по, например, 256 гармоникам, точное определение частоты будет просто невозможно из-за большой дискретности по частотам?

Ну, например, сигнал имеет частоту, отличную от тех, по которым производится разложение в спектр? раскладываем по частотам 1, 2, 3, ..., 256 Гц, а сигнал имеет частоту 55,45 Гц. На разложении будет один пик на 55 Гц, но определить по нему частоту нельзя, потеряем 0,45 Гц, то есть погрешность большая будет. Тут писали про центр тяжести по двум соседним частотам, но как что-то усреднить, если пик всего один на частоте 55 Гц, а на частотах 54 и 56 Гц амплитуда очень незначительная. Вот пример из матлаба.

Код
Fs = 20000;                    % Sampling frequency

T = 1/Fs;                     % Sample time
L = 256;                     % Length of signal
t = (0:L-1)*T;                % Time vector

y = 0.7*sin(2*pi*55*t); %Sinus 55 Hz

Y=fft(y);

subplot(1,1,1);
plot(y,t);
title('Спектр сигнала y')
xlabel('Частота (Hz)')
ylabel('|Y(f)|')


subplot(2,1,2);
plot(f,2*abs(Y(1:L/2+1)))
title('Спектр сигнала y')
xlabel('Частота (Hz)')
ylabel('|Y(f)|')


Ниже прикреплен файл с сигналом и разложением в спектр. Две соседние частоты 78,13 и 156,3 Гц, а заданная частота сигнала - 55 Гц. Как правильно определить частоту сигнала из такого спектра?

Сообщение отредактировал CTPEXHIH - Nov 13 2011, 08:41
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Nov 13 2011, 10:19
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Цитата(CTPEXHIH @ Nov 13 2011, 11:40) *
А как быть с тем, что при разложении сигнала в спектр по, например, 256 гармоникам, точное определение частоты будет просто невозможно из-за большой дискретности по частотам?

Ну ДПФ вообще имеет много недостатков. В частности, то о чем вы говорите называется "утечками" ДПФ.
Для минимизации сего эффекта применяется техника завешивания окном, поищите в интернете много информации на эту тему.
Да и вообще всегда лучше брать макимально возможное количество точек ДПФ, повышая тем самым частотное разрешение.
Если ваш сигнал подать на вход 8 точечного ДПФ, то на выходе вы вообще получите семигорбое чудовище. В матлабе может
и ничего результат будет, а вот в железе если, то точно ничего не разберете.

Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Nov 13 2011, 18:43
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(CTPEXHIH @ Nov 13 2011, 11:40) *
А как быть с тем, что при разложении сигнала в спектр по, например, 256 гармоникам, точное определение частоты будет просто невозможно из-за большой дискретности по частотам?

Смотрите в соседней теме, интерполяция спектра позволяет определить много точнее частоту, чем шаг по частоте в дпф. Хорошие результаты даёт дополнение нулями для увеличения числа точек дпф и применение оконных функций с широким главным лепестком (точность увеличивается, разрешающая способность уменьшается)
Go to the top of the page
 
+Quote Post
fontp
сообщение Nov 14 2011, 11:57
Сообщение #13


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

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



QUOTE (V_G @ Nov 13 2011, 05:01) *
Вообще при вычислении частоты по спектру ОБПФ не нужно, конечно.
Но возможно, они сделали БПФ-фильтрацию, восстановили сигнал во временной области, а потом применили классический счетный частотомер: усиление-ограничение сигнала и подсчет числа импульсов в заданный промежуток времени? Тут вам и фильтрация в частотной области, и фактическое усреднение во временной, может, так получается самый точный результат.


Так то оно так. Возможно. Только где фильтровать знать нужно заранее. И если частота неизвестна в широком дипазоне, то и фильтрация ничего не даст
Go to the top of the page
 
+Quote Post
ivan219
сообщение Nov 14 2011, 12:40
Сообщение #14


Местный
***

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



А если предположить что после БПФ определяется максимальный бин поле рассчитывается полосовой фильтр с полосой = +-1 бин от максимума. И сигнал фильтруется. А потом во временной области определяют частоту.
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Nov 14 2011, 18:21
Сообщение #15


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

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



Цитата(CTPEXHIH @ Nov 9 2011, 18:14) *
Преобразование Фурье входного сигнала -> преобразование Фурье коэффициентов КИХ-фильтра -> быстрая свертка КИХ-фильтра и сигнала -> обратное преобразование Фурье результатов свертки. То есть, они делают классическую цифровую фильтрацию входного сигнала. Затем определяется частота отфильтрованного от помех сигнала.

Вопрос в следующем: почему не определить частоту сигнала, сделав БПФ исходного сигнала с шумом, и приняв за частоту полезного сигнала частоту максимальной составляющей в спектре?

1.Если они делают обратное преобразование, значит не хотят использовать БПФ для измерения, а используют, например, точки перехода через нуль уточняя их по нескольким отсчетам около. Вполне разумный метод и точный.
2.Здесь предложено несколько методов и все имеют право на существование, если у Вас имеются записи реального сигнала легко проверить каждый и выбрать лучший.
3.При измерении механических параметров нечувствительность к помехам важнее точности. Например ударить ломиком по трубе или включить какой-нибудь мотор рядом. Ложных показаний не должно быть, а измерения должны продолжиться скажем через полсекунды.

<Ниже прикреплен файл с сигналом>
Если хотите использовать БПФ - берите в выборку не менее 7 периодов сигнала и используйте какое-нибудь окно. А на Вашей приличный результат даст определение частоты по трем точкам(приблизительно через пи/4)


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post

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

 


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


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