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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Интерполяция на микроконтроллере
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  « < 2 3 4
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 11:00
Рейтинг@Mail.ru


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