|
Интерполировать синус по 5 точкам на период, Как сделать просто и точно (дешево и сердито)? |
|
|
|
Oct 21 2016, 12:05
|

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

|
Цитата(serjj @ Oct 21 2016, 11:32)  Если реальное время не является критичным, можно использовать DFT интерполяцию. Пример: [attachment=103678:sine_interp_test.7z]
Здесь разумеется проявляются краевые эффекты, поэтому выводить лучше значения в интервале [N_guard...N_dft-N_guard]. Ну это уже детали реализации. Спасибо. Посмотрел, что работает. Синус восстанавливает прилично. Но этот алгоритм не соответствует требованию "просто". А на края окно можно наложить, наверное. Время не реальное (250 МВыб/с), но и не бесконечное. Возможно, и так получится. Нужно смотреть, во сколько уложится. А как будет интерполироваться этим алгоритмом перепад?
|
|
|
|
|
Oct 21 2016, 12:47
|

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

|
Цитата(Den64 @ Oct 21 2016, 15:27)  Такое предлагали? Пользовался, мне понравилось. Буржуи делают для людей, очень просто и удобно. Вещь хорошая. Но не по теме. Цитата(petrov @ Oct 21 2016, 15:18)  Я так понял, что в вашем сигнале нет частот выше, чтоб на период меньше 5 отсчётов приходилось, выборок в фильтре и будет куча использоваться, больше 5. Имеется в виду одновременно, для вычисления одного интервала интерполяции. Будем считать, что выше частот нет. А если есть, интерполируем, что получим.
|
|
|
|
|
Oct 21 2016, 13:43
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата(ViKo @ Oct 21 2016, 15:05)  Спасибо. Посмотрел, что работает. Синус восстанавливает прилично. Но этот алгоритм не соответствует требованию "просто". А на края окно можно наложить, наверное. Время не реальное (250 МВыб/с), но и не бесконечное. Возможно, и так получится. Нужно смотреть, во сколько уложится. А как будет интерполироваться этим алгоритмом перепад? Перепад чего смотря. Если амплитуды, то прекрасно, это легко проверить в том же скрипте  Как и любой другой перепад. А по сложности. Если у вас 250Msps, и вы хотите визуализировать сигнал на передискретезации, например, х10, то, наверное, это будет не потоковая визуализация, т.к. 2.5Gsps, допустим хотя бы байт на сэмпл = 20Gbps - согласитесь как-то многовато. Значит, скорее это будет какая-то произвольная выборка из данных АЦП, которая будет интерполироваться в N раз (в 10, например), выводиться на экран, далее берётся другая выборка и так по кругу. Правильно я понимаю? Тогда предложенное решение несложное, т.к. требует использования непотокового БПФ/ОБПФ, которое реализуется "малой кровью" как в аппаратуре так и на компьютере. ЗЫ: по поводу краёв, окно будет нужно, если вы хотите строить спектр этого сигнала. Для корректной визуализации проще выбрать только те значения, которые подходят. Например, с помощью ОБПФ было получено 8192 точки. Можно вывести на экран 8000 точек, выкинув первые и последние 96. ЗЗЫ: по поводу "приличности восстановления синуса". Метод, основанный на БПФ-ОБПФ - лучший линейный метод, т.к. он использует все доступные точки исходного сигнала для получения промежуточных значений. В этом плане он будет оптимальнее любого фильтра, т.к. фильтр будет просто напросто короче. С другой стороны нелинейные методы могут дать схожий результат по значительно меньшему количеству точек. Но тут вы рискуете получить всевозможные артефакты, как то: ложные экстремумы между точками, биения - это нелинейные искажения, которые присущи данным методам.
Сообщение отредактировал serjj - Oct 21 2016, 13:54
|
|
|
|
|
Oct 21 2016, 13:57
|

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

|
Цитата(serjj @ Oct 21 2016, 16:43)  Значит, скорее это будет какая-то произвольная выборка из данных АЦП, которая будет интерполироваться в N раз (в 10, например), выводиться на экран, далее берётся другая выборка и так по кругу. Правильно я понимаю? Тогда предложенное решение несложное, т.к. требует использования непотокового БПФ/ОБПФ, которое реализуется "малой кровью" как в аппаратуре так и на компьютере. ЗЫ: по поводу краёв, окно будет нужно, если вы хотите строить спектр этого сигнала. Для корректной визуализации проще выбрать только те значения, которые подходят. Например, с помощью ОБПФ было получено 8192 точки. Можно вывести на экран 8000 точек, выкинув первые и последние 96. Правильно. Не только в 10 раз. В много больше. Не по кругу, а от начала до конца. Фрагмент. Выбрасывать выборки не хочу. Интерполирую, дополнив края чем-нибудь. Метод БПФ-ОБПФ восстанавливает синус той же амплитуды. Это радует. А полиномиальные ломают, до амплитудных значений не дотягивают. Я так вижу в МАТЛАБе.
|
|
|
|
Guest_TSerg_*
|
Nov 1 2016, 15:20
|
Guests

|
Цитата(ViKo @ Oct 21 2016, 05:38)  Вычислить косинус посложнее полинома 7 степени будет. С чего вдруг стало проще? Потому, что, "как известно", удовлетворительной считается аппроксимация кривых для целей визуализации с СКП не более 3%. Посчитать косинус с такой погрешностью это точно менее затратно, чем полином 7 степени.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|