ctpexhih 0 9 ноября, 2011 Опубликовано 9 ноября, 2011 · Жалоба Существует следующая задача: есть периодический сигнал с определенным уровнем шумов, частоту которого надо определить. Данный сигнал является сигналом с датчика вихревого расходомера. Ведущие мировые производители таких расходомеров (Yokogawa, например), применяет следующий алгоритм ЦОС: Преобразование Фурье входного сигнала -> преобразование Фурье коэффициентов КИХ-фильтра -> быстрая свертка КИХ-фильтра и сигнала -> обратное преобразование Фурье результатов свертки. То есть, они делают классическую цифровую фильтрацию входного сигнала. Затем определяется частота отфильтрованного от помех сигнала. Вопрос в следующем: почему не определить частоту сигнала, сделав БПФ исходного сигнала с шумом, и приняв за частоту полезного сигнала частоту максимальной составляющей в спектре? У меня есть предположение, что из-за того, что частоты на спектре дискретны, так не получится определить частоту, лежащую между частотами спектра. Например, разложили сигнал по частотам 1, 2, 3, 4, ... Гц. Тогда по спектру не определить частоту 3,3 Гц, то есть определить-то можно, но пик будет на 3 Гц, а 3,3 в спектре просто нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 35 9 ноября, 2011 Опубликовано 9 ноября, 2011 · Жалоба У меня есть предположение, что из-за того, что частоты на спектре дискретны, так не получится определить частоту, лежащую между частотами спектра. Например, разложили сигнал по частотам 1, 2, 3, 4, ... Гц. Тогда по спектру не определить частоту 3,3 Гц, то есть определить-то можно, но пик будет на 3 Гц, а 3,3 в спектре просто нет. В таких случаях берут не частоту масимальной амплитуды, а находят центр тяжести в окружении двух соседних частот - тогда получится искомая 3,3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ursa 0 10 ноября, 2011 Опубликовано 10 ноября, 2011 · Жалоба Вопрос в следующем: почему не определить частоту сигнала, сделав БПФ исходного сигнала с шумом, и приняв за частоту полезного сигнала частоту максимальной составляющей в спектре? Уже сделали 3 года назад для питерских расходомеров. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dmitry_B 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба В таких случаях берут не частоту масимальной амплитуды, а находят центр тяжести в окружении двух соседних частот - тогда получится искомая 3,3. Оценка будет смещённой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба По-хорошему нужно делать по нескольким точкам аппроксимацию оконной функцией и оттуда считать максимум. Тогда ответ точный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ctpexhih 0 12 ноября, 2011 Опубликовано 12 ноября, 2011 (изменено) · Жалоба Почему же тогда в описании к расходомерам Yokogawa описан алгоритм фильтрации и т.д., а не просто определение частоты по спектру? Почему они не определяют частоту сигнала тупо из спектра? Возможно, есть какие-то причины, по которым так делать нельзя? Зачем тогда применять цифровую фильтрацию КИХ, БИХ? Взял просто в спектре занулил все гармоники в полосе подавления и сделал ОБПФ и все, получил чистейший фильтрованный сигнал! НО так почему-то не делается, а придумали разные фильтры. Изменено 12 ноября, 2011 пользователем CTPEXHIH Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 12 ноября, 2011 Опубликовано 12 ноября, 2011 · Жалоба Почему же тогда в описании к расходомерам Yokogawa описан алгоритм фильтрации и т.д., а не просто определение частоты по спектру? Почему они не определяют частоту сигнала тупо из спектра? Возможно, есть какие-то причины, по которым так делать нельзя? Зачем тогда применять цифровую фильтрацию КИХ, БИХ? Взял просто в спектре занулил все гармоники в полосе подавления и сделал ОБПФ и все, получил чистейший фильтрованный сигнал! НО так почему-то не делается, а придумали разные фильтры. так поступают, если сигнал не гармонический. Свёртка с опорным сигналом правильной формы даём максимально узкую взаимно корреляционную функцию, что увеличит отношение сигнал шум и сделает оценку частоты более точной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 12 ноября, 2011 Опубликовано 12 ноября, 2011 · Жалоба Почему они не Взял просто в спектре занулил все гармоники в полосе подавления и сделал ОБПФ и все, получил чистейший фильтрованный сигнал! НО так почему-то не делается, а придумали разные фильтры. Если нужно восстановить сигнал, то лучше не занулять составляющие спектра, а то после обратного Фурье сигнал будет содержать то чего не было на входе. Эффект Гиббса. Если сигнал не нужно восстанавливать, то для удобств дальнейшего обработки можно и занулить что-то. Большого криминала тут не будет, но в это задаче не понятно что занулять, вы же не знаете где у вас изначально в спектре сидит полезный сигнал. Не то занулите и не найдет, то что ищете. А фильтры разные придумали для того чтобы подавить шумы обрабатываемого сигнала, спектр которых заведомо не пересекается со спектром полезного сигнала, тем самым повысив соотношение сигнал/шум перед проведением ДПФ. В спектре отфильтрованного сигнал легче обнаружить составляющие полезного сигнала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 13 ноября, 2011 Опубликовано 13 ноября, 2011 (изменено) · Жалоба Вообще при вычислении частоты по спектру ОБПФ не нужно, конечно. Но возможно, они сделали БПФ-фильтрацию, восстановили сигнал во временной области, а потом применили классический счетный частотомер: усиление-ограничение сигнала и подсчет числа импульсов в заданный промежуток времени? Тут вам и фильтрация в частотной области, и фактическое усреднение во временной, может, так получается самый точный результат. Изменено 13 ноября, 2011 пользователем V_G Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ctpexhih 0 13 ноября, 2011 Опубликовано 13 ноября, 2011 (изменено) · Жалоба А как быть с тем, что при разложении сигнала в спектр по, например, 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 Гц. Как правильно определить частоту сигнала из такого спектра? Изменено 13 ноября, 2011 пользователем CTPEXHIH Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 13 ноября, 2011 Опубликовано 13 ноября, 2011 · Жалоба А как быть с тем, что при разложении сигнала в спектр по, например, 256 гармоникам, точное определение частоты будет просто невозможно из-за большой дискретности по частотам? Ну ДПФ вообще имеет много недостатков. В частности, то о чем вы говорите называется "утечками" ДПФ. Для минимизации сего эффекта применяется техника завешивания окном, поищите в интернете много информации на эту тему. Да и вообще всегда лучше брать макимально возможное количество точек ДПФ, повышая тем самым частотное разрешение. Если ваш сигнал подать на вход 8 точечного ДПФ, то на выходе вы вообще получите семигорбое чудовище. В матлабе может и ничего результат будет, а вот в железе если, то точно ничего не разберете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 13 ноября, 2011 Опубликовано 13 ноября, 2011 · Жалоба А как быть с тем, что при разложении сигнала в спектр по, например, 256 гармоникам, точное определение частоты будет просто невозможно из-за большой дискретности по частотам? Смотрите в соседней теме, интерполяция спектра позволяет определить много точнее частоту, чем шаг по частоте в дпф. Хорошие результаты даёт дополнение нулями для увеличения числа точек дпф и применение оконных функций с широким главным лепестком (точность увеличивается, разрешающая способность уменьшается) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fontp 0 14 ноября, 2011 Опубликовано 14 ноября, 2011 · Жалоба Вообще при вычислении частоты по спектру ОБПФ не нужно, конечно. Но возможно, они сделали БПФ-фильтрацию, восстановили сигнал во временной области, а потом применили классический счетный частотомер: усиление-ограничение сигнала и подсчет числа импульсов в заданный промежуток времени? Тут вам и фильтрация в частотной области, и фактическое усреднение во временной, может, так получается самый точный результат. Так то оно так. Возможно. Только где фильтровать знать нужно заранее. И если частота неизвестна в широком дипазоне, то и фильтрация ничего не даст Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan219 0 14 ноября, 2011 Опубликовано 14 ноября, 2011 · Жалоба А если предположить что после БПФ определяется максимальный бин поле рассчитывается полосовой фильтр с полосой = +-1 бин от максимума. И сигнал фильтруется. А потом во временной области определяют частоту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SPACUM 0 14 ноября, 2011 Опубликовано 14 ноября, 2011 · Жалоба Преобразование Фурье входного сигнала -> преобразование Фурье коэффициентов КИХ-фильтра -> быстрая свертка КИХ-фильтра и сигнала -> обратное преобразование Фурье результатов свертки. То есть, они делают классическую цифровую фильтрацию входного сигнала. Затем определяется частота отфильтрованного от помех сигнала. Вопрос в следующем: почему не определить частоту сигнала, сделав БПФ исходного сигнала с шумом, и приняв за частоту полезного сигнала частоту максимальной составляющей в спектре? 1.Если они делают обратное преобразование, значит не хотят использовать БПФ для измерения, а используют, например, точки перехода через нуль уточняя их по нескольким отсчетам около. Вполне разумный метод и точный. 2.Здесь предложено несколько методов и все имеют право на существование, если у Вас имеются записи реального сигнала легко проверить каждый и выбрать лучший. 3.При измерении механических параметров нечувствительность к помехам важнее точности. Например ударить ломиком по трубе или включить какой-нибудь мотор рядом. Ложных показаний не должно быть, а измерения должны продолжиться скажем через полсекунды. <Ниже прикреплен файл с сигналом> Если хотите использовать БПФ - берите в выборку не менее 7 периодов сигнала и используйте какое-нибудь окно. А на Вашей приличный результат даст определение частоты по трем точкам(приблизительно через пи/4) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться