bahurin 0 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба Здесь конкретно 50 Гц и фазовый шум - нестабильность турбогенератора - минимальный. Сигнал до того сильный, что к нему помехи не прилипают, кроме как гармоники от нелинейностей. Ну разве что там сварка, станки, лифты... Если делать чистый скользящий ДПФ - то на выходе реальная и мнимая части - имеются натурально. Скользящий ДПФ - та же узкополосная фильтрация, чем длиннее ДПФ - тем уже полоса. А измерение 3-х гармоник в соседних ДПФ-каналах - это только для оценки амплитуды. Опыт показывает, что такая оценка даже лучше, чем промышленным вольтметром переменного напряжения. абсолютно верно! Чем длине ДПФ тем уже полоса и точнее оценка. Но изначально люди хотят на 20 мс получить оценку частоты с высокой точностью в интервале 45-55 Гц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fontp 0 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба Если делать чистый скользящий ДПФ - то на выходе реальная и мнимая части - имеются натурально. Это, очевидно, не то. Действительная синусоида - это не одна спектральная линия, а пара. Причём, если они достаточно близко к нулевой частоте, то они начнут "сливаться" и рассматриваемые выше методы интерполяции работать не будут. А мы говорим о ПРЕДЕЛЬНО ТОЧНЫХ оценках, а не о каких попало. Оценки, точность которых лучше чем по критерию Крамера-Рао невозможны, а которые заметно хуже нас не интересуют. Возникающие дополнительно проблемки при оценке частот реальных синусоид в отличие от комплексных (для которых вопрос давно раз и навсегда решён) рассматриваются отдельно до сих пор исследователями. Мне например попадалась такая статья, какая в аттачменте Скользящий ДПФ - та же узкополосная фильтрация, чем длиннее ДПФ - тем уже полоса. А измерение 3-х гармоник в соседних ДПФ-каналах - это только для оценки амплитуды. Опыт показывает, что такая оценка даже лучше, чем промышленным вольтметром переменного напряжения. Это не имеет отношения к делу. Мы обычно ищем максимально точную оценку частоты при возможно более коротком ДПФ Дальше логика такая - 1. у нас есть алгоритмы для оценки частоты комплексной экспоненты, имеющие уже предельную точность 2. для реальной синусоиды мы хотели бы свести задачу к решённой 1, например с помощью преобразования Гильберта или типа того (хоть сдвигом во времени на четверть периода, если сигнал уж совсем узкополостный) - преобразованием к аналитическому сигналу в любом случае 3. практические реализации наших преобразований - не всеполостны. Поэтому возможно нам потребуется предварительно фильтровать сигнал в некоторой полосе частот. Обычно это не составляет проблемы, поскольку частота сигнала всё таки не изменяется широко Real_Freq_est.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sup-sup 0 19 октября, 2009 Опубликовано 19 октября, 2009 (изменено) · Жалоба Это тоже не совсем правильно. Добавляя нулей вы не вносите никакой дополнительной информации, поэтому вы не можете рассчитывать на увеличение точности оценки частоты. При этом если вы имеете идеальную синусоиду, то такой подход вполне оправдан, но если частота меняется, то никакая интерполяция не поможет. Только увеличение времени анализа Добавляя нули мы доводим интерполяцию до нужной нам точности. Используем только ту информацию, что у нас имеется. Не добавляем, но и не убиваем. Нам нужна только первая гармоника, вот мы и строим фильтр после добавления нулей на нее только. Остальные выборки улучшат отношение сигнал / шум. Можно фильтровать, применив свертку, а можно сделать аналогичную операцию с помощью FFT - это не изменит результата. Больше информации, чем есть в выборке конкретной длины, естественно, не добыть, но использовать можно всю, или почти всю. Принцип неопределенности в данном случае нужно практически проверить, применив выборки разной длины (или размер FFT, или длину фильтра), и выбрать наиболее устраивающий вариант. Изменено 19 октября, 2009 пользователем sup-sup Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndeyP 0 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба принцип неопределенности справедлив для всех процессов в известной нам вселенной. Могучий принцип. Наверное им хорошо обосновывать, почему частоту нельзя померить... А можно взять - и померить... А если серъезно, применять принцип неопределенности, что бы под этим не подразумевалось, к математическому объекту, у которого частота определена по определению, по меньшей мере нелогично. Попробую вам пояснить вашу проблему. Вы хотите померить частоту сигнала. Вы предполагаете что сигнал это одна синусоида, т.е. ее частота не меняется. Исходя из этого вы строите алгоритм и пытаетесь найти одну частоту, потому что считаете что она не меняется. Совершенно верно, использовать математику можно только в рамках абстрактной математической модели. У любой модели есть ограничения. Чем проще модель - тем легче с ней работать.... Действительная синусоида - это не одна спектральная линия, а пара. Причём, если они достаточно близко к нулевой частоте, то они начнут "сливаться" и рассматриваемые выше методы интерполяции работать не будут. А мы говорим о ПРЕДЕЛЬНО ТОЧНЫХ оценках, а не о каких попало. Мне кажется в статье "Optimum Windows for Carrier Frequency Estimation," http://lcs.syr.edu/faculty/sarkar/1983.html механизм влияния отрицательных частот изложен более понятно чем в прилепленной статье (см. параграф 'noiseless case' и fig.3). Наверное товарищи So и Chan эту статью не читали, иначе не стали бы занижать эффективность периодограммы, используя прямоугольное окно... Типичная ошибка. По двум отсчётам (АЦП) невозможно (гарантированно) определить ни амплитуду, ни фазу, ни разность фаз самого наидеального синуса. Есть конечно предельный случай с вероятностью 0, когда эти два отсчёта совпадут с экстремумами синуса, но на это глупо уповать. Ну почему же, если амплитуда известна, и шума нет, то больше двух отсчетов для определения частоты и не надо. Хотя вероятность что такая халява когда-нибудь встретится на практике, действительно близка к нулю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Могучий принцип. Наверное им хорошо обосновывать, почему частоту нельзя померить... А можно взять - и померить... А если серъезно, применять принцип неопределенности, что бы под этим не подразумевалось, к математическому объекту, у которого частота определена по определению, по меньшей мере нелогично. Принцип действительно могучий. Функция не может быть локализована и во временной и в частотной областях. Т е если функция локализована во времени (дельта-функция), то спектр ее будет неограничен по частоте. И наоборот - локализация в частотной области даст неограниченный во времени сигнал. Посчитать частоту гармонического дискретного вещественного сигнала x(n) без шумов c неизвестной амлитудой и фазой - не проблема. Достаточно 3-х последовательных отсчетов : f=0.5*real( acos( (x(n)+x(n+2) )/(2*x(n+1))) )*Fd/pi Проблема появляется при появлении шумов и помех. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fontp 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Мне кажется в статье "Optimum Windows for Carrier Frequency Estimation," http://lcs.syr.edu/faculty/sarkar/1983.html механизм влияния отрицательных частот изложен более понятно чем в прилепленной статье (см. параграф 'noiseless case' и fig.3). Наверное товарищи So и Chan эту статью не читали, иначе не стали бы занижать эффективность периодограммы, используя прямоугольное окно... Странный Вы человек, противоречивый. So&Chan не пользуясь не нужными окнами и не читая ненужных статей вышли на теоретически предельно возможные по эффектиивности оценки частоты. Сама по себе периодограмма (без интерполяции) такую точность никогда не даст, какие окна не прикручивай. Ошибка будет оставаться порядка бина DFT. Окна всего лишь дают компромисс между шириной центрального лепества и боковиками. А Вы говорите "занижать". Они не могли бы получить более точных оценок, чем по Крамеру-Рао, если бы даже на пупе извертелись )) Хотя, конечно, могут быть разные подходы к интерполяции. И некоторые могут оказаться проще при реализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aser 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Странные какие-то споры. Сигнал 50 Гц - это, в общем-то, стационарный сигнал, по крайней мере, на участке несколько минут. Выбрать его период, пусть даже приблизителдьно, повторить сколько надо раз и анализируй вдоль и впоперек с какой хочешь точностью через ДПФ, БПФ с учетом его эргодичности. Если период неизвестен, можно корреляцию посчитать с частотой дискретизации герц 500-2000. Затем можно найти спектр по методу авторегрессии - как у Марпла написано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndeyP 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Выкладываю свою тестовую среду для алгоритмов оценки частоты. Может пригодится тем кто кладет на принципы - пользуйтесь на здоровье, если разберетесь. Сейчас там сравниваются метод поиска максимума периодограммы, несколько интерполяторов, и еще два алгоритма параметрических оценок, кстати из другой статьи того же So (параметрические естественно не будут работать если вход не соответствует модели 1 тон + шум). Тест заключается в генерации тестового тона с заданными параметрами и с добавлением шума, затем частота тона оценивается алгоритмом и сравнивается с известной. Тест выполняется многократно для случайно изменяющейся частоты (в пределах 1-го бина) и начальной фазы, после усреднения получается оценка среднеквадратичной ошибки оценки частоты для заданного SNR. Такой тест выполняется для SNR от -6 до +inf dB, с использованием прямоугольного и других окон. freq_est.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Может пригодится тем кто кладет на принципы - пользуйтесь на здоровье, если разберетесь. Здесь таких нет. Поэтому кол-во скачиваний должно остаться равно нулю :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 21 октября, 2009 Опубликовано 21 октября, 2009 · Жалоба Есть сигнал. Частота основной гармоники 50 гц. Используется алгоритм ДПФ. При смещении частоты на 1-5 Гц. Появляется дополнительная погрешность по модулю ДПФ. Оконное сглаживание не годится. частота дискретизации 1200гц задана жёстко и не меняется, выборок строго 24 за период. Слышал про алгоритм интерполяции, но так ничего конкретного не нашёл. Может кто сталкивался или известен источник.???? Необходимо минимизировать погрешность БПФ при смещении частоты сигнала при постоянной частоте дискретизации. Вы забыли написать про время измерения. 24 точки на период, а сколько всего точек? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TigerSHARC 0 21 октября, 2009 Опубликовано 21 октября, 2009 · Жалоба Вы забыли написать про время измерения. 24 точки на период, а сколько всего точек? ... алгоритм выполняется постоянно, оценка БПФ производиться каждый период сигнала(20 мс), оценка может производится сколь угодно долго, главное - 24 точечное БПФ, которое должно выполниться за 20 мс, получается так... каждые 20 мс вычисляется БПФ... так вот, если частота начнёт гулять, нужно что бы данные полученные от БПФ (модуль) не были искажены... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 21 октября, 2009 Опубликовано 21 октября, 2009 · Жалоба ... алгоритм выполняется постоянно, оценка БПФ производиться каждый период сигнала(20 мс), оценка может производится сколь угодно долго, главное - 24 точечное БПФ, которое должно выполниться за 20 мс, получается так... каждые 20 мс вычисляется БПФ... так вот, если частота начнёт гулять, нужно что бы данные полученные от БПФ (модуль) не были искажены... Пытаться измерять частоту по одному периоду - это очень плохо. Тем более при помощи БПФ на 24 точки. Гармоники близко, они будут мешать интерполировать спектр. Ну а хоть про то, что БПФ на 24 точки - это уже не Кули-Тьюки, а немного более сложная структура быстрого алгоритма, Вы в курсе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexkok 0 22 октября, 2009 Опубликовано 22 октября, 2009 · Жалоба ... алгоритм выполняется постоянно, оценка БПФ производиться каждый период сигнала(20 мс), оценка может производится сколь угодно долго, главное - 24 точечное БПФ, которое должно выполниться за 20 мс, получается так... каждые 20 мс вычисляется БПФ... так вот, если частота начнёт гулять, нужно что бы данные полученные от БПФ (модуль) не были искажены... А зачем в таком случае БПФ? Тут наверное что-то следящее больше подходит, типа цифровой ФАПЧ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sup-sup 0 22 октября, 2009 Опубликовано 22 октября, 2009 (изменено) · Жалоба ... алгоритм выполняется постоянно, оценка БПФ производиться каждый период сигнала(20 мс), оценка может производится сколь угодно долго, главное - 24 точечное БПФ, которое должно выполниться за 20 мс, получается так... каждые 20 мс вычисляется БПФ... так вот, если частота начнёт гулять, нужно что бы данные полученные от БПФ (модуль) не были искажены... Дык ведь, если доступен поток данных непрерывный. то и делаем интерполяционный фильтр с какой надо точностью (то есть, с необходимым нам увеличением частоты отсчетов, а потом анализируем. Проблем то нет. Лучше, все равно, не получится. Самое прямое и понятное решение. После интерполяции размер БПФ увеличенный берем, опять, такой какой нам нужен для точности. Изменено 22 октября, 2009 пользователем sup-sup Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bahurin 0 22 октября, 2009 Опубликовано 22 октября, 2009 · Жалоба ... алгоритм выполняется постоянно, оценка БПФ производиться каждый период сигнала(20 мс), оценка может производится сколь угодно долго, главное - 24 точечное БПФ, которое должно выполниться за 20 мс, получается так... каждые 20 мс вычисляется БПФ... так вот, если частота начнёт гулять, нужно что бы данные полученные от БПФ (модуль) не были искажены... Если надо получить оценку амплитуды каждые 20 мс делайте с перекрытием. Например БПФ на 64 точки, которое каждый раз сдвигается на 24 точки, т.е. постоянное перекрытие интервалов обработки. Таким образом длина БПФ отвязана от одного периода и можно делать весовое сглаживание для высокой точности амплитуды. Вот матлаб пример: clear all; clc; fs = 1200; %частота дискретизации N = 1000; % обработка в течении 1000 отсчетов L = 64; % окно анализа 64 отсчета t = (0:N-1)/fs; %время K = 24; %смещаем окно анализа на 24 отсчета X =1; % начальное смещение i =1; % номер итерации f = 50+(rand(1,1)-0.5*10); %случайная частота 50+-5 Гц % сигнал с небольшим гулянием амплитуды s0 = 1.4*sin(2*pi*f*t).*(1+0.5*cos(0.5*pi*t+rand(1,1)*2*pi)); %цикл анализа while((X+L)<N) % пока есть отсчеты для анализа s = s0(X:X+L-1); %выбираю превое окно длины L = 64 отсчета w = window(@flattopwin ,L)'; % максимально плоское весовое окно чтобы получить максимально-точную оценку амплитуды S = abs(fft(s.*w))/(sum(w)); % БПФ A(i) = max(S); % амплитуда в данном окне такая вот T(i) = (X+L/2)/fs; %первое окно с задержкой 64 отсчета i =i+1; % инкремент номера цикла анализа X=X+K;% смещаю окно на 20 мс теперь будет без задержек end; plot(t,s0,T,A*2,'r.-'),grid; % синим сигнал, красным его амплитуда. точки оценки амплитуды идут через 20 мс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться