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

 
 
> Интерполировать синус по 5 точкам на период, Как сделать просто и точно (дешево и сердито)?
ViKo
сообщение Oct 19 2016, 10:23
Сообщение #1


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

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



Вопрос, скорее, для обсуждения разных вариантов. Лучшим по точности будет, очевидно, восстановление sinc функциями. Но как это сделать в реальности, микроконтроллером, а не в MATLAB? Кубическая интерполяция будет сильно ломать сигнал. Может, как-то полином 5 степени использовать? 7-й? А нет ли способа чисто синус найти подходящий? Какие еще есть способы?
И еще, если взять 10 точек на период, что здесь можно применить? Задачка выглядит намного более легкой. Значит, и способ найдется попроще.
Критерий "похожести", наверное - задать величину среднеквадратического отклонения интерполированного сигнала от оригинала. Не знаю, какое конкретное значение выбрать. Нужно, чтобы было "похоже" визуально. laughing.gif
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3 >  
Start new topic
Ответов (15 - 29)
_pv
сообщение Oct 19 2016, 13:07
Сообщение #16


Гуру
******

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



Цитата(ViKo @ Oct 19 2016, 19:33) *
Опять Wolfram. Что это за зверь такой?

Mathematica. В закромах лежит, попробуйте, имхо куда лучше матлаба.
Прикрепленное изображение


Цитата(ViKo @ Oct 19 2016, 19:33) *
Этот путь понятен. Ходил. У меня есть свой матлабовский файл с полиномами разных степеней. Стряхну пыль, посимулирую.А другие варианты есть?

ну брать те же несколько соседних точек и теми же наименьшими квадратами, но уже правда нелинейными, натягивать на них синус, а не полином.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Oct 19 2016, 15:05
Сообщение #17





Guests






Сшивание синусоиды параболой по 6-ти точкам ( 5 точек уже явно неудовлетворительно ):
http://shot.qip.ru/00gZ9L-1OPovQH3t/

По 9-ми точкам вполне удовлетворительно, с т.з. визуализации:
http://shot.qip.ru/00gZ9L-5OPovQH3v/

P.S.
Еще косинусная интерполяция:

float CosInterpolate(float v1, float v2, float a)
{
float angle = a * PI;
float prc = (1.0f - cos(angle)) * 0.5f;
return v1*(1.0f - prc) + v2*prc;
}
Go to the top of the page
 
+Quote Post
serjj
сообщение Oct 20 2016, 13:56
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Нет, период не известен. Даже, что синус, тоже притянуто за уши. Просто в документации будет записано "полоса частот такая-то". Если для максимальной частоты у меня выходит 5 выборок АЦП на период, желаю продемонстрировать, что наблюдается "синус".


Для демонстрации "синуса" нужно ИМХО смотреть на спектр сигнала и на количество и соотношение гармоник: какие, сколько, каково соотношение между ними и т.д. Из наблюдения за колебанием во временной области ничего разумного заключить нельзя. Поэтому, сделать Фурье, для максимальной частоты будет хорошо наблюдаемая гармоника в районе fs/5, что и требуется показать.

Сообщение отредактировал serjj - Oct 20 2016, 13:58
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Oct 20 2016, 15:07
Сообщение #19





Guests






Цитата(serjj @ Oct 20 2016, 16:56) *
для максимальной частоты будет хорошо наблюдаемая гармоника в районе fs/5, что и требуется показать.

Так я и предложил эмуляцию на крайних частотах cranky.gif

P.S.
Т.е. должны быть два режима: измерительный (в диапазоне нормальных частот), когда все по честному и тестово-демонстрационный, в диапазоне крайних частот, когда делается симуляция по 1..3 крайним тестовым частотам, значения которых оговорены в ПМ.

P.P.S.
И это не обман Заказчика, поскольку мы, на основе реальных измерений, алгоритмически выявляем крайние частоты и показываем их наличие в удобной и понятной для всех визуальной форме.
Go to the top of the page
 
+Quote Post
serjj
сообщение Oct 20 2016, 16:12
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Удобная и понятная для всех визуальная форма - это спектр.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Oct 20 2016, 16:22
Сообщение #21





Guests






Цитата(serjj @ Oct 20 2016, 19:12) *
Удобная и понятная для всех визуальная форма - это спектр.

Да, но у ТС похоже что-то вроде генератора частот с визуализацией сигнала во временной области.
Мы не знаем всех ньюансов ТЗ, а потому и гадать не будем.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Oct 20 2016, 17:17
Сообщение #22


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

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



Нелинейное вписывание. Он же фит. Почему нужно полином-5 вписывать? Почему синус не вписать? Вычислительно сложно?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 20 2016, 17:38
Сообщение #23


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

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



В свое время вот эту статью нашел (здесь в форуме и автор был, и ссылку на эту статью я давал). Также несколько других, представляющих интерес. По этим статьям в MATLAB экспериментировал. Сейчас пересмотрел. Вижу, что интерполяция сплайном Эрмита по 6 точкам, как в статье, дает примерно такой же результат, как интерполяция полиномом 5 степени. Но проще.
TSerg, гадание, зачем это нужно, не понадобится, если заглянуть в мой профиль. rolleyes.gif
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Oct 20 2016, 18:09
Сообщение #24





Guests






Цитата(ViKo @ Oct 20 2016, 20:38) *
гадание, зачем это нужно, не понадобится, если заглянуть в мой профиль

Дефки? Голые?

Цитата(ViKo @ Oct 20 2016, 20:38) *
Вижу, что интерполяция сплайном Эрмита по 6 точкам

Косинусом проще и не хуже.
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 20 2016, 22:01
Сообщение #25


Гуру
******

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



Передискретизация у вас довольно большая, поэтому никакой бесконечной крутизны и длинного ФНЧ не требуется, увеличиваем частоту дискретизации ещё в два раза добавлением нулей, давим праразитный спектральный образ полуполосным ФНЧ, отсюда экономия вычислений на полифазной реализации и нулевых коэффициентах полуполосного фильтра, затем простым дробным параболическим интерполятором Фарроу любые точки вычисляем.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 21 2016, 02:38
Сообщение #26


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

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



Частота выборок в 5 раз больше частоты сигнала - это большая передискретизация?
Мне не нужно в реальном времени фильтровать. Поэтому все эти полифазные фильтры, хитроумные перетрахивания операторов (Фарроу) не нужны. Нужны формулы, а как их использовать, найдем способ.

Цитата(TSerg @ Oct 20 2016, 21:09) *
Косинусом проще и не хуже.

Вычислить косинус посложнее полинома 7 степени будет. С чего вдруг стало проще?
Go to the top of the page
 
+Quote Post
serjj
сообщение Oct 21 2016, 08:32
Сообщение #27


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Если реальное время не является критичным, можно использовать DFT интерполяцию. Пример:
Прикрепленный файл  sine_interp_test.7z ( 475 байт ) Кол-во скачиваний: 34


Здесь разумеется проявляются краевые эффекты, поэтому выводить лучше значения в интервале [N_guard...N_dft-N_guard]. Ну это уже детали реализации.
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 21 2016, 11:08
Сообщение #28


Гуру
******

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



Цитата(ViKo @ Oct 21 2016, 05:38) *
Частота выборок в 5 раз больше частоты сигнала - это большая передискретизация?


Да. Фильтр простой будет, скажем 5 умножений на константы на входной частоте дискретизации, зависит от требований к подавлению.

Цитата(ViKo @ Oct 21 2016, 05:38) *
Мне не нужно в реальном времени фильтровать. Поэтому все эти полифазные фильтры, хитроумные перетрахивания операторов (Фарроу) не нужны. Нужны формулы, а как их использовать, найдем способ.


Не имеет значения, в реальном, не в реальном, зачем лишние вычисления, параболический Фарроу - простой способ любой отсчёт вычислить промежуточный, но требует побольше чем 5 отсчётов на период, увеличиваем в два раза до 10, половина отсчётов остаётся исходная, нужно вычислить только вторую половину между исходными отсчётами, а это всего лишь ФНЧ симметричный с чётным количеством коэффициентов, который даёт задержку в пол такта исходной частоты дискретизации, единственное требование к которому - АЧХ константная вплоть до вашей крайней частоты.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 21 2016, 11:53
Сообщение #29


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

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



Так а почему сразу по 10 выборкам не интерполировать, если этот Фарроу требует больше 5 выборок? И почему он столько требует?
А, понял. Ломать сильно будет. Ну так на одном Фарроу теория не остановилась.
Параболический - кубическая парабола, естественно?
То есть, поскольку кубическим полиномом интерполяция не блещет качеством, вы предлагаете интерполировать в 2 этапа. Что же не полиномом 5-й степени?
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 21 2016, 12:01
Сообщение #30


Гуру
******

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



Цитата(ViKo @ Oct 21 2016, 14:53) *
Так а почему сразу по 10 выборкам не интерполировать...


Вы 5 на период задали в исходной постановке.

Цитата(ViKo @ Oct 21 2016, 14:53) *
И почему он столько требует?


Потому что простой, чем меньше передискретизация тем сложнее интерполятор для вычисления произвольной точки между исходными отсчётами.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:06
Рейтинг@Mail.ru


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