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

 
 
> Интерполяция на микроконтроллере
Rion
сообщение Nov 1 2016, 09:53
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Столкнулся с такой задачей: Есть АЦП с частотой дискретизации 8 кГц - задан жестко. Есть микроконтроллер, работающий на частоте 120 МГц - тоже задан жестко. Частота сигнала - частота сети 50 Гц. Т.е. после АЦП на микроконтроллер идут 160 отсчетов на 1 период сигнала. Далее на 10 периодах применяется БПФ на 1024 отсчета (тут БПФ не рассматривается, уже реализовано).

Собственно в чем весь вопрос: Какой именно вид интерполяции применить лучше всего (есть линейная, квадратичная, кубическими сплайнами, полиномы Лагранжа и прочее)? Ведь необходимо из 1600 отсчетов сделать 1024 - по-любому необходима интерполяция. И еще необходимо обеспечить точность - в идеале около 1%.

И еще один момент - всё это делается на микроконтроллере, т.е. потом все эти алгоритмы будут преобразованы в код на C++.
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 54)
sysel
сообщение Nov 1 2016, 10:17
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Цитата(Rion @ Nov 1 2016, 13:53) *
Ведь необходимо из 1600 отсчетов сделать 1024 - по-любому необходима интерполяция.

Нет такой необходимости.

Берёте 1600 отсчетов, умножаете их на оконную функцию (исходя из N = 1600). Дополняете массив нулями до размера 2048. Дальше БПФ.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 1 2016, 10:22
Сообщение #3





Guests






1. Зачем Вам интерполяция на 10 периодах? Делайте на одном.
2. Почему нужно переходить от 160 отсчетов к 128 (к примеру)?
3. Цель интерполяции?
5. Погрешности по видам интерполяции считаются или моделируются - это не большая сложность.
Go to the top of the page
 
+Quote Post
sqrt(2)
сообщение Nov 1 2016, 10:40
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 20-07-16
Пользователь №: 92 633



Цитата(Rion @ Nov 1 2016, 12:53) *
Собственно в чем весь вопрос: Какой именно вид интерполяции применить лучше всего (есть линейная, квадратичная, кубическими сплайнами, полиномы Лагранжа и прочее)? Ведь необходимо из 1600 отсчетов сделать 1024 - по-любому необходима интерполяция. И еще необходимо обеспечить точность - в идеале около 1%.

Всегда думал, что интерполяция - это вычисление новых отсчетов, но преобразование 1600 в 1024 отсчета - это вроде как уменьшение числа отсчетов, разве нет? Тогда это уже не интерполяция, а децимация.

Сообщение отредактировал sqrt(2) - Nov 1 2016, 10:41
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 1 2016, 10:47
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(sqrt(2) @ Nov 1 2016, 13:40) *
Всегда думал, что интерполяция - это вычисление новых отсчетов, но преобразование 1600 в 1024 отсчета - это вроде как уменьшение числа отсчетов, разве нет? Тогда это уже не интерполяция, а децимация.

В данном случае топикстартер желает изменить частоту дискретизации. Для этого потребуется и то и другое.
Тоже не вижу необходимости. Делать БПФ по 1024 отсчетам. А что частоты не "круглые" получаются, так не великая беда. Может, результаты интерполировать, чтобы красивые графики рисовать?
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 1 2016, 11:07
Сообщение #6





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(sysel @ Nov 1 2016, 16:17) *
Нет такой необходимости.

Берёте 1600 отсчетов, умножаете их на оконную функцию (исходя из N = 1600). Дополняете массив нулями до размера 2048. Дальше БПФ.



Да, но если добивать нулями, то сильно искажается спектр и тогда оценить уровень гармоник не представляется возможным. К тому же БПФ на 2048 точек уже становится слишком ресурсоемким, даже на Cortex-M4F. Но за идею спасибо.

Цитата(TSerg @ Nov 1 2016, 16:22) *
1. Зачем Вам интерполяция на 10 периодах? Делайте на одном.
2. Почему нужно переходить от 160 отсчетов к 128 (к примеру)?
3. Цель интерполяции?
5. Погрешности по видам интерполяции считаются или моделируются - это не большая сложность.



1. Ибо БПФ согласно ГОСТ нужно считать именно на 10 периодах. На самом деле не БПФ, а гармоники нужно считать на 10 периодах, поэтому такое условие.
2. Вот и получается, что необходима передискретизация с 1600 отсчетов на 1024 отсчета.
3. Вот как раз и цель интерполяции - пункт 2.
4. А погрешность - согласен, можно легко промодилеровать.

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

Цитата(ViKo @ Nov 1 2016, 16:47) *
В данном случае топикстартер желает изменить частоту дискретизации. Для этого потребуется и то и другое.
Тоже не вижу необходимости. Делать БПФ по 1024 отсчетам. А что частоты не "круглые" получаются, так не великая беда. Может, результаты интерполировать, чтобы красивые графики рисовать?



Если немного уйти от темы, то в общем случае на вход АЦП идет ослабленный сигнал электрической сети. АЦП на 8 кГц, как я уже говорил. Данные с АЦП приходят в микроконтроллер. И задача стоит в том, чтобы оценить уровень гармоник вплоть до 50. И вот одно из решение: Так как частота сети плавает, то применить интерполяцию и получить 1024 отсчета и далее БПФ и вот они гармоники.
Go to the top of the page
 
+Quote Post
sqrt(2)
сообщение Nov 1 2016, 11:26
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 20-07-16
Пользователь №: 92 633



Полифазный фильтр
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 1 2016, 11:48
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Поправьте меня, если я что-то не правильно говорю:

Полифазный фильтр действует примерно так:

Сначала мы увеличиваем частоту дискретизации в М раз - т.е. интерполируем сигнал.
Затем прореживаем до нужного нам количества отсчетов, т.е. откидываем ненужные, т.е. производим децимацию сигнала?

Не искажается ли спектр после отбрасывания отсчетов?
Go to the top of the page
 
+Quote Post
sqrt(2)
сообщение Nov 1 2016, 11:58
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 20-07-16
Пользователь №: 92 633



Цитата(Rion @ Nov 1 2016, 14:48) *
Поправьте меня, если я что-то не правильно говорю:

Полифазный фильтр действует примерно так:

Сначала мы увеличиваем частоту дискретизации в М раз - т.е. интерполируем сигнал.
Затем прореживаем до нужного нам количества отсчетов, т.е. откидываем ненужные, т.е. производим децимацию сигнала?

Не искажается ли спектр после отбрасывания отсчетов?

Конечно искажается. Чтобы этих искажений не было в итоговом сигнале в полифазном фильтре (неожиданно) есть фильтр, который защищает от наложений.

Сообщение отредактировал sqrt(2) - Nov 1 2016, 11:59
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 1 2016, 12:00
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(sqrt(2) @ Nov 1 2016, 17:58) *
Конечно искажается. Чтобы этих искажений не было в итоговом сигнале в полифазном фильтре (неожиданно) есть фильтр, который защищает от наложений.


Тогда совсем глупый вопрос: И всё это дело можно организовать программным образом на микроконтроллере? Если да, можете подсказать пару методов или алгоритмов. Пожалуйста.
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 1 2016, 12:20
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Rion @ Nov 1 2016, 15:53) *
Столкнулся с такой задачей: Есть АЦП с частотой дискретизации 8 кГц - задан жестко. Есть микроконтроллер, работающий на частоте 120 МГц - тоже задан жестко. Частота сигнала - частота сети 50 Гц. Т.е. после АЦП на микроконтроллер идут 160 отсчетов на 1 период сигнала. Далее на 10 периодах применяется БПФ на 1024 отсчета (тут БПФ не рассматривается, уже реализовано).

Собственно в чем весь вопрос: Какой именно вид интерполяции применить лучше всего (есть линейная, квадратичная, кубическими сплайнами, полиномы Лагранжа и прочее)? Ведь необходимо из 1600 отсчетов сделать 1024 - по-любому необходима интерполяция. И еще необходимо обеспечить точность - в идеале около 1%.

лагранжем проще по сравнению с кубическими сплайнами, не надо по всем данным от начала до конца бегать туда/сюда чтобы граничные условия выполнить, можно на лету делать.
http://ru.dsplib.org/content/resampling_lagrange.html
но для 1% при 160 точках на период и линейная интерполяция возможно вполне сгодится, хотя для 20й гармоники останется только 8 точек на период что уже маловато будет.

ну и добивание сигнала нулями спектр вообще-то не портит, от того что 0 умножают на синус/косинус и интегрируют результат не меняется.
сетка частот съедет, но и так у вас 8кГц и 1024 отчёта = 7.8125Гц в 50Гц не особо попадают.
https://electronix.ru/forum/index.php?s=&am...t&p=1452224
если не хочется делать по 2048 точкам, берите 6 периодов и добивайте нулями до 1024.

про БПФ: вместо всего спектра и 1024 отсчётов, если нужны только гармоники 50Гц, то ДПФ только для этих нескольких частот может оказаться быстрее.
БПФ грубо говоря 100 тактов на отсчёт - 100 000 тактов для вычисления спектра. + оконная функция + передискретизация, но это мелочи по сравнению с самим БПФ, ещё %10 сверху.
а ДПФ, особенно если Герцелем без тригонометрии - несколько тактов на отсчёт. до ~20 гармоник выигрыша от БПФ нет, плюс считать можно налету без буферизации данных вообще.
Go to the top of the page
 
+Quote Post
sqrt(2)
сообщение Nov 1 2016, 12:29
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 20-07-16
Пользователь №: 92 633



Цитата(Rion @ Nov 1 2016, 15:00) *
Тогда совсем глупый вопрос: И всё это дело можно организовать программным образом на микроконтроллере? Если да, можете подсказать пару методов или алгоритмов. Пожалуйста.

Можно. Сам правда не делал (в смысле на МК не делал). Точно есть в Лайонсе и что-то было в книге Айчифер, Джервис "Цифровая обработка сигналов: практический подход".

Сообщение отредактировал sqrt(2) - Nov 1 2016, 12:30
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 1 2016, 14:11
Сообщение #13





Guests






Цитата(Rion @ Nov 1 2016, 15:00) *
Тогда совсем глупый вопрос

Здесь, почитайте, для начала.
DSPLIB
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 2 2016, 03:42
Сообщение #14





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(_pv @ Nov 1 2016, 18:20) *
про БПФ: вместо всего спектра и 1024 отсчётов, если нужны только гармоники 50Гц, то ДПФ только для этих нескольких частот может оказаться быстрее.
БПФ грубо говоря 100 тактов на отсчёт - 100 000 тактов для вычисления спектра. + оконная функция + передискретизация, но это мелочи по сравнению с самим БПФ, ещё %10 сверху.
а ДПФ, особенно если Герцелем без тригонометрии - несколько тактов на отсчёт. до ~20 гармоник выигрыша от БПФ нет, плюс считать можно налету без буферизации данных вообще.


Как раз на 10 периодах и получается максимум до 50 гармоники - я это уже моделировал и код писал в IAR - всё работает, БПФ на 1024 считает четко, погрешность очень маленькая и как раз до 50 гармоники.

Ведь частота сети плавает, хоть это и считается медленно меняющимся параметром, в связи с чем меняется и количество отсчетов на 10 периодов (Почему именно 10? ГОСТ 30804.4.30 - 2013). 1600 отсчетов - идеализированный случай. Будь частота 48, отсчетов будет уже 1667 на 10 периодов. К чему я это - получить 1024 из плавающих 1600 - сможет ли Герцель с таким справиться? И уложиться в 2.5 - 3 мс.
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 2 2016, 11:46
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Rion @ Nov 2 2016, 09:42) *
Как раз на 10 периодах и получается максимум до 50 гармоники

сверху гармоники ограничены частотой дисктеризации, а не временем измерения.
и еще раз, 8кГц и 1024 точки даёт разрешение по частоте 7.8125 Гц, что в 50Гц нацело не очень попадает и для первых гармоник, значительную часть от 1% ошибки можно в это месте легко собрать.

Цитата(Rion @ Nov 2 2016, 09:42) *
К чему я это - получить 1024 из плавающих 1600 - сможет ли Герцель с таким справиться? И уложиться в 2.5 - 3 мс.

Герцель ничего не интерполирует, это и есть дискретное (обычное, не быстрое) преборазование Фурье (F(w)=\int{f(t)*cos[sin](wt)dt}), где вычисление тригонометрии(sin/cos) заменено цифровым осциллятором (одно умножение и сложение), но его, в отличии от БПФ который даёт весь спектр сразу, не обязательно считать для всех 1024 частот, можно посчитать только на тех 50ти частотах которые интересны, ну и длина выборки любая, степенью 2 не ограничена.

10 периодов это 200мс, а вычислить надо за 3мс?
120МГц и 3мс это 360000 тактов, или 350 тактов на отсчёт для 1024 точек.
или 7 тактов на отсчёт если считать для 50 частот.
Герцелю надо умножение, пару сложений, на отсчёт для одной частоты, в семь тактов если и уложится, то на пределе.
так что для 50 и больше частот БПФ, который выдаёт спектр целиком будет пожалуй побыстрее.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 2 2016, 13:29
Сообщение #16





Guests






Разложение числа на простые множители:
1600 = 2 · 2 · 2 · 2 · 2 · 2 · 5 · 5
Микс БПФ по двойке и пятерке.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Nov 2 2016, 13:40
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(TSerg @ Nov 2 2016, 16:29) *
Разложение числа на простые множители:
1600 = 2 · 2 · 2 · 2 · 2 · 2 · 5 · 5
Микс БПФ по двойке и пятерке.

+1.
Подробнее можно посмотреть здесь: Блейхут Р. Быстрые алгоритмы цифровой обработки сигналов.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 2 2016, 14:09
Сообщение #18





Guests






О вариантах БПФ
Parallel.ru

Еще:
Морфизприбор - БПФ для ГАС:
Прикрепленный файл  NontraditionalFFT.pdf ( 186.41 килобайт ) Кол-во скачиваний: 119

К слову - нетрадиционные БПФ, это сейчас - нетрадиционные. Тогда, в 70-х традиционными были скорее нетрадиционные сегодня, т.к. цена быстродействия за лишнюю точку была высока.

P.S.
Тогда, когда еще не все были повально увлечены БПФ по степеням двойки, достаточно интересным и более быстрым был алгоритм Винограда. Представляя одномерное БПФ как многомерное, с разложением по простым множителям, удавалось значительно повысить скорость обработки.
Прикрепленный файл  PNAS_1976_Winograd_1005_6.pdf ( 237.93 килобайт ) Кол-во скачиваний: 75
Go to the top of the page
 
+Quote Post
alex_os
сообщение Nov 2 2016, 17:10
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(TSerg @ Nov 2 2016, 17:09) *
О вариантах БПФ
Parallel.ru

Еще:
Морфизприбор - БПФ для ГАС:
Прикрепленный файл  NontraditionalFFT.pdf ( 186.41 килобайт ) Кол-во скачиваний: 119

К слову - нетрадиционные БПФ, это сейчас - нетрадиционные. Тогда, в 70-х традиционными были скорее нетрадиционные сегодня, т.к. цена быстродействия за лишнюю точку была высока.


Годная статья но маленькая, сейчас "нетрадиционное ффт" называется mixed radix fft. Вот например


А вот такой вопрос топикстартеру, скажем первая гармоника (50 Гц) изменяется на 0.1 %, тогда 50я гармоника изменится примерно на пол бина FFT и чего Вы тогда намеряете?


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 2 2016, 17:17
Сообщение #20





Guests






Цитата(alex_os @ Nov 2 2016, 20:10) *
Годная статья но маленькая, сейчас "нетрадиционное ффт" называется mixed radix fft. Вот

Для ТС-ра, даже и это - слишком много, надеюсь, что - пока.

P.S.
Родной мой, ну ты хватил - давай еще CRAY и пр. сюда подтащим.
ТС-ру нужна реализация на микроконтроллере, какие уж тут ядра и параллельности.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Nov 2 2016, 17:22
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



В 4G, он же LTE, есть размерность FFT, равная 1536, так что там 3^1*2^9. И сейчас есть нетрадиционные размерности sm.gif
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 2 2016, 17:34
Сообщение #22





Guests






Цитата(alex_os @ Nov 2 2016, 20:10) *
А вот такой вопрос топикстартеру, скажем первая гармоника (50 Гц) изменяется на 0.1 %, тогда 50я гармоника изменится примерно на пол бина FFT и чего Вы тогда намеряете?

Не пугайте юношу страшным словом "Метрология".
Go to the top of the page
 
+Quote Post
alex_os
сообщение Nov 2 2016, 17:57
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(TSerg @ Nov 2 2016, 20:17) *
P.S.
Родной мой, ну ты хватил - давай еще CRAY и пр. сюда подтащим.
ТС-ру нужна реализация на микроконтроллере, какие уж тут ядра и параллельности.


Ага для CRAY есть аналогичное sm.gif. На самом деле ценность математики, в этих статьях - это возможность записать любое FFT в виде
одной формулы, а там CRAY или Intel I-7 или АRM это уже вторично.




--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 2 2016, 18:07
Сообщение #24





Guests






Цитата(alex_os @ Nov 2 2016, 20:57) *
а там CRAY или Intel I-7 или АRM это уже вторично.

Для тех, кто в такой теме давно - может и да.
Но, зачем ТС-ра пугать в его теме?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Nov 2 2016, 19:39
Сообщение #25


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



И вправду, если нужны значения только на определенных частотах (гармоники) нафига бпф делать? Считайте мощность только в нужных точках (сдвигайте спектр на столько на сколько надо герц и осредняйте).
И про разрешающую спотобность тоже правильно упомянули тут, хотя так же правильно сказали, что это не наше дело.
В целом общая идея комментариев, что интерполяция тут не нужна.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 3 2016, 07:40
Сообщение #26


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Задайте частоту дискретизации АЦП 6400 Гц. За 128 выборок наберете 20 мс. Вычислив БПФ, получите 64 гармоники 50 Гц сигнала, с полосой каждого бина 50 Гц.

Потом для большей точности измерения амплитуды усредняйте результаты БПФ.

Не можете уйти от 8 кВыб/с? Интерполируйте на 4, децимируйте на 5. Хотя я этого садомазо из-за упертости схемотехника (или кого?) не понимаю.

Да, АЧХ каждого бина не плоская, на краях загибается. Думаю, можно забить. Или взять 256 выборок, БПФ по 256, получить шаг 25 Гц. Лучше 512 или больше, чтобы знать, как относить палки спектра к нужным гармоникам сигнала.
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 3 2016, 07:59
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



10 раз усреднённый спектр по 20мс и один по 200мс совсем не одно и то же.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 3 2016, 08:06
Сообщение #28


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(_pv @ Nov 3 2016, 10:59) *
10 раз усреднённый спектр по 20мс и один по 200мс совсем не одно и то же.

А то! rolleyes.gif
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 4 2016, 16:06
Сообщение #29





Guests






По-хорошему, я бы вообще делал десять замеров периодов, начиная каждый замер в момент прерывания по zero-detected.
Мало ли там, что - по ГОСТУ-у sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 5 2016, 04:45
Сообщение #30


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я бы вообще не считал (количество замеров)... Усреднял бы и усреднял непрерывно замеры.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 5 2016, 07:46
Сообщение #31





Guests






Цитата(ViKo @ Nov 5 2016, 07:45) *
Я бы вообще не считал (количество замеров)... Усреднял бы и усреднял непрерывно замеры.

Говорят, по ГОСТ-у положено 10. Так, что после 10-ти и после 11-го идет просто задержка выдачи результата на период.
Go to the top of the page
 
+Quote Post
John
сообщение Nov 7 2016, 09:27
Сообщение #32


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 6-10-04
Пользователь №: 799



Вообще алгоритмы измерения сетевых гармоник подробно изложены в ГОСТ 30804.4.7-2013 и там в качестве опорного метода рекомендуется БПФ.

http://meganorm.ru/Data2/1/4293778/4293778588.pdf



Проблему ТС я вижу в том, что у него частота дискретизации не синхронизируется с сетевой частотой, как рекомендует ГОСТ,
а является фиксированной 8 кГц. Скорее всего используется готовый AFE. Чтобы обеспечить работу в требуемом по ГОСТУ интервале измерений от 42 до 58 Гц сетевой частоты, на 10 периодах сети имеем возможный разброс от 1380 до 1900 отсчетов и отсюда проблему передискретизации в фиксированные 1024 из-за дробного и непостоянного коэффициента.

Интерполяцию можно делать через кубические сплайны, можно через интерполирующий фильтр. Здесь что будет быстрее не знаю, но я бы через сплайны делал.
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 7 2016, 10:22
Сообщение #33





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(John @ Nov 7 2016, 15:27) *
Вообще алгоритмы измерения сетевых гармоник подробно изложены в ГОСТ 30804.4.7-2013 и там в качестве опорного метода рекомендуется БПФ.

http://meganorm.ru/Data2/1/4293778/4293778588.pdf



Проблему ТС я вижу в том, что у него частота дискретизации не синхронизируется с сетевой частотой, как рекомендует ГОСТ,
а является фиксированной 8 кГц. Скорее всего используется готовый AFE. Чтобы обеспечить работу в требуемом по ГОСТУ интервале измерений от 42 до 58 Гц сетевой частоты, на 10 периодах сети имеем возможный разброс от 1380 до 1900 отсчетов и отсюда проблему передискретизации в фиксированные 1024 из-за дробного и непостоянного коэффициента.

Интерполяцию можно делать через кубические сплайны, можно через интерполирующий фильтр. Здесь что будет быстрее не знаю, но я бы через сплайны делал.


Да, всё именно так. Я немного ступил и задал неверные начальные данные, из-за этого обсуждение свернуло немного в другую сторону. То, что Вы описали - именно это мне и надо получить. В ходе обсуждения и было предложено делать интерполяцию, чтобы получить фиксированные 1024 отсчета и как-то решить проблему с плавающими входными отсчетами. Мне как раз и хотелось узнать - какую интерполяцию применяют в данном случае? Точно не линейная - точность требуемую по ГОСТ не обеспечим. Сплайнами? Точность первоклассная, а вот ресурсов требует наравне с БПФ (примерно 70, а то и все 90 процентов). Делать сначала интерполяцию, а потом децимацию лишено всякого смысла.

Спасибо! sm.gif
Go to the top of the page
 
+Quote Post
Pavia
сообщение Nov 14 2016, 08:19
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 3-02-14
Из: Интернет
Пользователь №: 80 322



Цитата
Делать сначала интерполяцию, а потом децимацию лишено всякого смысла.

А учебники вы из принципа не читаете? Сначала интерполяция а потом децимация и никак иначе. В противном случае вылезут ложные частоты.

В вашем случае хватит линейной, но по правилам делаем Sinc. Хватит 3-х или 5-ти точечного ядра. Интерполяцию делаете интерполирующим фильтром.
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 14 2016, 12:23
Сообщение #35





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(Pavia @ Nov 14 2016, 14:19) *
А учебники вы из принципа не читаете? Сначала интерполяция а потом децимация и никак иначе. В противном случае вылезут ложные частоты.

В вашем случае хватит линейной, но по правилам делаем Sinc. Хватит 3-х или 5-ти точечного ядра. Интерполяцию делаете интерполирующим фильтром.


Поправьте меня, если я не прав. Все операции передискретизации и преобразование Фурье делается на микроконтроллере, CORTEX-M4F. Вы предлагаете исходные отсчеты с АЦП (а их от 1380 до 1900 ), приходящие на МК сначала интерполировать в N раз, а потом провести децимацию (отбросить каждый M отсчет) - это, как я понимаю и есть интерполирующий фильтр. А интерполяцию делать Sinc-функцией. Но ведь таким же образом можно сделать и сплайн-интерполяцию, подозреваю, что и примерно с такой же скоростью. Да, интерполяция Sinc-функцией очень точна, но вместе с тем делается гораздо дольше. Линейная интерполяция не обеспечит необходимой точности, заданной ГОСТ - уже моделировал в MathCAD - расхождения очень большие.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 14 2016, 12:28
Сообщение #36


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Прокомментируйте мое предложение:
https://electronix.ru/forum/index.php?showt...t&p=1459238
а то складывается впечатление, что вы его пропустили.
Go to the top of the page
 
+Quote Post
arhiv6
сообщение Nov 14 2016, 12:51
Сообщение #37


Знающий
****

Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



.

Сообщение отредактировал arhiv6 - Nov 14 2016, 12:53


--------------------
Go to the top of the page
 
+Quote Post
John
сообщение Nov 15 2016, 06:25
Сообщение #38


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 6-10-04
Пользователь №: 799



Цитата(Rion @ Nov 7 2016, 14:22) *
Делать сначала интерполяцию, а потом децимацию лишено всякого смысла.

Восстановление значения сигнала между двумя отсчетами (интерполяция) автоматически означает повышение частоты
дискретизации в N раз. Чем ближе восстановленный отсчет к первому исходному отсчету - тем выше N. В пределе для непрерывного
сигнала частота стремиться к бесконечности.
Существуют важные частные случаи передискретизации, для которых вычисление новых отсчётов производится проще:
- децимация с целым коэффициентом (уменьшение частоты дискретизации в целое D число раз);
- интерполяция с целым коэффициентом (увеличение частоты дискретизации в целое N число раз);
- изменение частоты дискретизации в рациональное (N/D) число раз (этот случай можно рассматривать как комбинацию двух предыдущих).

https://ru.wikipedia.org/wiki/Передискретизация

https://blog.amartynov.ru/интерполяция-или-фильтр

Цитата(ViKo @ Nov 3 2016, 11:40) *
Задайте частоту дискретизации АЦП 6400 Гц. За 128 выборок наберете 20 мс. Вычислив БПФ, получите 64 гармоники 50 Гц сигнала, с полосой каждого бина 50 Гц.

Потом для большей точности измерения амплитуды усредняйте результаты БПФ.

Не можете уйти от 8 кВыб/с? Интерполируйте на 4, децимируйте на 5. Хотя я этого садомазо из-за упертости схемотехника (или кого?) не понимаю.

Да, АЧХ каждого бина не плоская, на краях загибается. Думаю, можно забить. Или взять 256 выборок, БПФ по 256, получить шаг 25 Гц. Лучше 512 или больше, чтобы знать, как относить палки спектра к нужным гармоникам сигнала.

Сетевая частота может сильно меняться и поэтому задавать фиксированную частоту нельзя. Ее надо синхронизировать с сетевой из-за требования обеспечить интервал измерений строго 10 периодов сетевой частоты (сетевая частота измеряется другим методом и заранее известна). Если нельзя уйти от 8 кВыб/с то коэффициент N/D (интерполяция/децимация) будет переменным и очень дробным, потребует фильтрации на очень высокой частоте. Думаю надо смотреть в сторону кубических сплайнов https://ru.wikipedia.org/wiki/интерполяция
ну, может быть, полифазного фильтра. Поправьте, если не прав.
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 15 2016, 07:54
Сообщение #39





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(John @ Nov 15 2016, 12:25) *
Сетевая частота может сильно меняться и поэтому задавать фиксированную частоту нельзя. Ее надо синхронизировать с сетевой из-за требования обеспечить интервал измерений строго 10 периодов сетевой частоты (сетевая частота измеряется другим методом и заранее известна). Если нельзя уйти от 8 кВыб/с то коэффициент N/D (интерполяция/децимация) будет переменным и очень дробным, потребует фильтрации на очень высокой частоте. Думаю надо смотреть в сторону кубических сплайнов https://ru.wikipedia.org/wiki/интерполяция
ну, может быть, полифазного фильтра. Поправьте, если не прав.



Всё как раз и сводится к тому, каким именно способом интерполировать. Или посмотреть в сторону полифазного фильтра, но, если честно, я про него не читал и, пока что плохо представляю как его можно реализовать.

Если говорить более общо, то меня интересовало то, каким способом сейчас делают интерполяцию применительно к моему случаю (задаче). Будь частота микроконтроллера выше и составляла хотя бы 200 МГц, то можно смело делать сплайн, лишь оптимизировав код под конкретный процессор и используя все его (микроконтроллера) функции и ресурсы, и не бояться, что пока будет обрабатываться сигнал мы не успеем провести другие измерения и какие-то другие действия.

Естественно, можно взять и сплайн, но может быть есть другие способы интерполяции, не менее эффективные и точные, если кто-то занимался подобными вещами на практике.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 15 2016, 08:01
Сообщение #40


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(John @ Nov 15 2016, 09:25) *
Сетевая частота может сильно меняться и поэтому задавать фиксированную частоту нельзя. Ее надо синхронизировать с сетевой из-за требования обеспечить интервал измерений строго 10 периодов сетевой частоты (сетевая частота измеряется другим методом и заранее известна).

Полоса каждого бина БПФ будет 50 Гц, влезет любое отклонение частоты от номинальной.

Если уж так надо привязаться к частоте сети, то... надо к ней привязаться. ФАПЧ!
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 15 2016, 10:50
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(ViKo @ Nov 15 2016, 14:01) *
Полоса каждого бина БПФ будет 50 Гц, влезет любое отклонение частоты от номинальной.

и для 20й гармоники тоже?
Цитата(ViKo @ Nov 15 2016, 14:01) *
Если уж так надо привязаться к частоте сети, то... надо к ней привязаться. ФАПЧ!

не надо к ней привязываться ФАПЧем, её надо просто автокорелляцией измерять, а потом делать обычное преобразование Фурье для нужного количества гармоник по сетке частот, соответствующей измеренной частоте основной гармоники.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 15 2016, 11:14
Сообщение #42


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(_pv @ Nov 15 2016, 13:50) *
и для 20й гармоники тоже?

Впритык. Частота сети контролируется глобально. Шаг влево-вправо - расстрел. Так меня учили.
При отклонении основной гармоники на 1 Гц 20-я уйдет на 20 Гц, а 50-я на 50 Гц. Влазит.
А она кому-то нужна, аж 20-я гармоника?
Цитата
не надо к ней привязываться ФАПЧем, её надо просто автокорелляцией измерять, а потом делать обычное преобразование Фурье для нужного количества гармоник по сетке частот, соответствующей измеренной частоте основной гармоники.

Вы запрещаете или не советуете? rolleyes.gif А потом интерполировать непотребное? Пока будете интерполировать по измеренной, реальная частота убежит.

Дополню. Интерполировать синус кубическим полиномом (все эти сплайны-лагранжи-фарроу-эрмиты-катмулы-с-роммами...), а потом вычислять в нем 20-ю гармонику? О_о. Их там будет немеряно всяких, в-основном, несуществующих в исходном сигнале.

А, по сетке частот Герцелем? Можно.
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 15 2016, 12:16
Сообщение #43





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(ViKo @ Nov 15 2016, 17:14) *
А она кому-то нужна, аж 20-я гармоника?

Дополню. Интерполировать синус кубическим полиномом (все эти сплайны-лагранжи-фарроу-эрмиты-катмулы-с-роммами...), а потом вычислять в нем 20-ю гармонику? О_о. Их там будет немеряно всяких, в-основном, несуществующих в исходном сигнале.

А, по сетке частот Герцелем? Можно.


Как раз таки ГОСТ и требует измерение 50 гармоник сетевой частоты и от ГОСТа никуда не уйти. ГОСТ 30804.4.7-2013.

Интерполяция сплайном, по крайней мере как показывает моделирование в MathCad, не очень сильно искажает исходный сигнал. Порядка 0,5 В.

Герцелем вычислять все 50 гармоник? При условии, что количество отсчетов всегда плавает. Можно ли будет уложиться хотя бы в 5-7 мс? На CORTEX-M4F, 120 МГц.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 15 2016, 12:38
Сообщение #44


Гуру
******

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



Цитата(Rion @ Nov 15 2016, 15:16) *
Можно ли будет уложиться хотя бы в 5-7 мс? На CORTEX-M4F, 120 МГц.

А почему "уложиться хотя бы в 5-7 мс"? Почему не в 0,5-0,7 мс?
И почему именно "CORTEX-M4F, 120 МГц"?
В природе есть много процессоров, хороших и разных..
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 15 2016, 13:25
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Rion @ Nov 15 2016, 18:16) *
Герцелем вычислять все 50 гармоник? При условии, что количество отсчетов всегда плавает. Можно ли будет уложиться хотя бы в 5-7 мс? На CORTEX-M4F, 120 МГц.

FFT надо ~100 таков на отсчёт, Герцелю - одно умножение и пара сложений, соответственно для ~20 гармоник Герцель будет быстрее чем FFT для всего спектра.
ну пусть даже будет 10 тактов на отсчёт для Герцеля, для 10 периодов 50Гц на 8кГц это 1600 точек * 10 тактов на отсчёт * 50 гармоник / 120МГц = 6мс.
плавающее количество отсчётов Герцелю никак не мешает и не надо ничего интерполировать.
то что последняя точка может не попасть в целое количество периодов на пол периода АЦП, +-0.5/8кГц = 60мкс, для 10ти периодов думаю никак на точность не повлияет.


Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 15 2016, 13:43
Сообщение #46


Гуру
******

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



Цитата(_pv @ Nov 15 2016, 16:25) *
FFT надо ~100 таков на отсчёт..

Ну, это зависит от процессора. Для 16-ти битного FFT на 2048 точек blackfin'у требуется ~16 тактов на отсчет..
Кроме того, есть процессоры, в которые встроен аппаратный ускоритель FFT.
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 15 2016, 16:13
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(blackfin @ Nov 15 2016, 20:43) *
Ну, это зависит от процессора. Для 16-ти битного FFT на 2048 точек blackfin'у требуется ~16 тактов на отсчет..
Кроме того, есть процессоры, в которые встроен аппаратный ускоритель FFT.

ну так то блэкфин, там и два алу, и аппаратные циклы, и куча шин, что позволяет за один такт и два МАСа сделать и ещё и в память слазить за следующими данными.

а у ТС - кортекс М4.

1024-FFT (Complex in Q15 Format)
Cortex-M0 : 855 733 cycles
Cortex-M0+ : 664 531 cycles
Cortex-M3 : 204 244 cycles
Cortex-M4 : 89 839 cycles

хотя для М4F попадались цифры в 40 тактов на отсчёт с плавающей запятой.
FFTN M4 A8 A9 A15 BF5xx BF70x SHARC21489
64 3709 3773 3358 2264 2200 1526 783
128 9811 6384 5682 3830 5249 3431 1334
256 21575 11114 9891 6668 11744 7611 2542
512 37813 21852 19448 13111 27385 17084 5189
1024 96630 50738 45157 30443 60216 37568 10972

так что 100 тактов на отсчёт для оценки вполне пойдёт.

ну и для анализа сетевых 50Гц это всё-таки постараться надо чтобы в вычислительную мощность процессора упиралось.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Nov 16 2016, 13:07
Сообщение #48


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(_pv @ Nov 15 2016, 16:25) *
FFT надо ~100 таков на отсчёт, Герцелю - одно умножение и пара сложений, соответственно для ~20 гармоник Герцель будет быстрее чем FFT для всего спектра.
ну пусть даже будет 10 тактов на отсчёт для Герцеля, для 10 периодов 50Гц на 8кГц это 1600 точек * 10 тактов на отсчёт * 50 гармоник / 120МГц = 6мс.
плавающее количество отсчётов Герцелю никак не мешает и не надо ничего интерполировать.
то что последняя точка может не попасть в целое количество периодов на пол периода АЦП, +-0.5/8кГц = 60мкс, для 10ти периодов думаю никак на точность не повлияет.


Кстати не факт что 20 "Гертцелей" будут быстрее одного FFT . Скажем есть 1024 отсчета для FFT требуется порядка N * log2 ( N ) = 10240 комплексных операций. Считаем что для Гертцеля требуется одна комплексная операция на отсчет , итого 20 Гертцелей будут стоить 20*1024 = 20480 операций.
Тут кто-то про ФАПЧ выше писал... Такая идея... Хватаемся ФАПЧ за первую гармонику, из генератора фапч делаем опорные комплексные экспоненты с частотами 2*f1, 3*f1.... 20*f1, считаем их корреляцию со входным сигналом.

-----------------------------------
p.s. Кажется лет 6 назад была точно такая же тема здесь. И вроде было все подробно разобрано, и кажется пришли к мысли что передискретизация(интерполяция) особо не нужна чтобы измерить частоту (амплитуду) отдельно стоящей гармоники.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
petrov
сообщение Nov 16 2016, 14:01
Сообщение #49


Гуру
******

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



Цитата(alex_os @ Nov 16 2016, 16:07) *
p.s. Кажется лет 6 назад была точно такая же тема здесь. И вроде было все подробно разобрано, и кажется пришли к мысли что передискретизация(интерполяция) особо не нужна чтобы измерить частоту (амплитуду) отдельно стоящей гармоники.


Это дежавю каждый год, если не чаще.
Вообще есть специальные flat top окна, читай FIR фильтр с плоской АЧХ в полосе пропускания, чтобы не вносить ошибку в амплитуду из-за частотного сдвига, точного значения частоты не нужно, только грубое, чтобы выбрать нужный фильтр в банке, куда гармоника попала, громадное FFT тоже не нужно, поскольку АЧХ фильтров в банке будут сильно перекрываться, поэтому можно проредить и использовать эффективную реализацию банка фильтров в виде полифазник+небольшое FFT.
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 16 2016, 16:10
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(alex_os @ Nov 16 2016, 19:07) *
Кстати не факт что 20 "Гертцелей" будут быстрее одного FFT . Скажем есть 1024 отсчета для FFT требуется порядка N * log2 ( N ) = 10240 комплексных операций. Считаем что для Гертцеля требуется одна комплексная операция на отсчет , итого 20 Гертцелей будут стоить 20*1024 = 20480 операций.

не все комплексные операции одинаково полезны (с).
вон на 1024FFT кортексу М0 надо в десять раз больше тактов чем М4.
а вот для того чтобы умножить и сложить пару чисел ему точно в десять раз больше тактов не надо.

Цитата(alex_os @ Nov 16 2016, 19:07) *
Тут кто-то про ФАПЧ выше писал... Такая идея... Хватаемся ФАПЧ за первую гармонику, из генератора фапч делаем опорные комплексные экспоненты с частотами 2*f1, 3*f1.... 20*f1, считаем их корреляцию со входным сигналом.

и чем это от Герцеля отличается?
только частоту основной гармоники просто измерить, автокорреляцией или через среднеквадратичное значение производной, а не из фапча. и потом считать Герцелем те же интегралы Фурье для частот 2*f1, 3*f1.... 20*f1,.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Nov 17 2016, 09:04
Сообщение #51


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(_pv @ Nov 16 2016, 19:10) *
не все комплексные операции одинаково полезны (с).
вон на 1024FFT кортексу М0 надо в десять раз больше тактов чем М4.
а вот для того чтобы умножить и сложить пару чисел ему точно в десять раз больше тактов не надо.


А чего для Гертцеля не нужно в 10 раз больше тактов?


Цитата(_pv @ Nov 16 2016, 19:10) *
и чем это от Герцеля отличается?
только частоту основной гармоники просто измерить, автокорреляцией или через среднеквадратичное значение производной, а не из фапча. и потом считать Герцелем те же интегралы Фурье для частот 2*f1, 3*f1.... 20*f1,.

Почти ничем не отличается только частоту мерить не надо sm.gif.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 17 2016, 11:56
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(alex_os @ Nov 17 2016, 15:04) *
А чего для Гертцеля не нужно в 10 раз больше тактов?

так там ничего кроме единственного умножения нет. не в десять же раз дольше на М0 два числа перемножаются по сравнению с М4.

Цитата(alex_os @ Nov 17 2016, 15:04) *
Почти ничем не отличается только частоту мерить не надо sm.gif.

если прибор анализирует сетевые 50Гц, её всё равно измерять надо.
Go to the top of the page
 
+Quote Post
AlexRayne
сообщение Nov 17 2016, 17:16
Сообщение #53


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877



Цитата(TSerg @ Nov 1 2016, 18:11) *
Здесь, почитайте, для начала.
DSPLIB

плюсую, а потом фильтр Фароу глянуть - дешево, сердито и практично. для работы на процессоре с ограниченной памятью, или дохлым кешем - самое оно.
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 21 2016, 12:29
Сообщение #54





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Подытожим.

Если уж очень хочется делать через интерполяцию - то предпочтительно сплайнами, можно попробовать Лагранжа.

Применить "Герцеля" для расчета 50 гармоник - как сказали выше, "Герцль"не зависит от числа входных отсчетов, ведь всё равно в них укладывается четное число периодов.

Еще один способ (или метод) - реализовать на МК фильтр Фарроу - это случаем не полифазный ли фильтр? Если, как утверждают, "Герцль" справляется с плавающим числом входных отсчетов, то справится ли фильтр.

Уважаемые, я ничего не упустил?
Go to the top of the page
 
+Quote Post
Rion
сообщение Nov 22 2016, 10:38
Сообщение #55





Группа: Участник
Сообщений: 11
Регистрация: 31-07-14
Пользователь №: 82 420



Цитата(AlexRayne @ Nov 17 2016, 23:16) *
плюсую, а потом фильтр Фароу глянуть - дешево, сердито и практично. для работы на процессоре с ограниченной памятью, или дохлым кешем - самое оно.


Проблем с памятью или кешем нет - в МК есть место, где можно хранить сигнал и коэффициенты. Поэтому для меня в предпоследнюю очередь играет роль то, сколько программа потребует места для выполнения и для хранения данных. Важнее - скорость и точность.


Насколько я понял, в фильтре Фарроу присутствует кусочно-полиномиальная интерполяция. Так тогда можно обойтись и без фильтра, а напрямую посчитать кусочно-полиномиальную интерполяцию для моего случая. Хотя, есть подозрения, что придется накладывать оконную функцию, чтобы не появились новые спектральные составляющие и не исчезли старые. Но, по сути, если интерполяция достаточно точная - этого произойти не должно. К тому же и до интерполяции и после неё в получившихся отсчетах всё равно будет содержаться 10 периодов сигнала.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:58
Рейтинг@Mail.ru


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