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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Интерволяция для отображения сигнала
ivan219
сообщение Jan 31 2011, 16:47
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Есть сигнал диапазоне частот от 0 до половины частоты дискретизации. Сигнал периодический. Нужно его вывести на монитор никаких других действий с сигналом производится больше не будет.

Проблема: если частота высокая отображается не красиво.

Вопрос: посоветуйте максимально хороший интерполятор.

Пробовал Форроу 3 порядка так как других не знаю. Вроде не плохо, но он считает только по 4 точкам.

Хочу, что бы в расчёте участвовало большее количество точек.
Go to the top of the page
 
+Quote Post
SSerge
сообщение Jan 31 2011, 16:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Так а теорема Котельникова на что?
Там и способ восстановления сигнала прописан.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Jan 31 2011, 17:26
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Плохой Форроу. Не годится если частота высокая. Получается очень коряво.

Цитата(SSerge @ Jan 31 2011, 19:56) *
Так а теорема Котельникова на что?
Там и способ восстановления сигнала прописан.


Почитаю, но я думал, что какой то метод интерполяции подойдет с большим количеством точек участвующих в расчёте.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 31 2011, 17:30
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(ivan219 @ Jan 31 2011, 21:47) *
Проблема: если частота высокая отображается не красиво.
Что означает "не красиво"?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 31 2011, 18:26
Сообщение #5


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

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



Цитата(ivan219 @ Jan 31 2011, 19:26) *
Плохой Форроу. Не годится если частота высокая. Получается очень коряво.

А формулы, по которым считали, можете привести?
Вот здесь я нашел конкретные формулы, а не голые слова http://gwyddion.net/documentation/user-guide-ru/index.html
Go to the top of the page
 
+Quote Post
ivan219
сообщение Jan 31 2011, 21:35
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(rezident @ Jan 31 2011, 20:30) *
Что означает "не красиво"?

Это когда точка скачет по экрану очень резко и вместо плавной линии ломаная кривая. Которая ну ни как не похожа на синусоиду. Смотрите картинку зелёным обозначен исходный сигнал.

ViKo
От сюда http://dsplib.ru/

На картинке зелёная исходная красная после Форроу увеличил в 8 раза.

Сообщение отредактировал ivan219 - Jan 31 2011, 21:47
Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 1 2011, 05:57
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



А почему не сделать интерполяцию классическим способом (не для реализации, так для проверки) - добавить нули и пропустить через фильтр (КИХ) нижних частот
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 1 2011, 07:54
Сообщение #8


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

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



Цитата(ivan219 @ Jan 31 2011, 23:35) *
На картинке зелёная исходная красная после Форроу увеличил в 8 раза.

А в одном масштабе по времени можете показать? А то непонятно, что вы интерполируете. А кривизна, скорее всего, от реализации - недостаточная разрядность или просто ошибка.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 1 2011, 13:37
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(sup-sup @ Feb 1 2011, 08:57) *
А почему не сделать интерполяцию классическим способом (не для реализации, так для проверки) - добавить нули и пропустить через фильтр (КИХ) нижних частот


Хочу обойтись без лишнего. Интерполяция предпологается дробная.

Цитата(ViKo @ Feb 1 2011, 10:54) *
А в одном масштабе по времени можете показать? А то непонятно, что вы интерполируете. А кривизна, скорее всего, от реализации - недостаточная разрядность или просто ошибка.


Смотрите на картинку в таком масштабе? А искажения исчезают, если количество точек исходного сигнала на один период колебания будет равно не менее 8. Тогда после интерполяции в 16 и более раз видно нормальную синусоиду.

Сообщение отредактировал ivan219 - Feb 1 2011, 13:54
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
АНТОН КОЗЛОВ
сообщение Feb 2 2011, 05:56
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 344
Регистрация: 3-01-09
Из: УФА
Пользователь №: 42 894



Цитата(ivan219 @ Feb 1 2011, 16:37) *
Хочу обойтись без лишнего. Интерполяция предпологается дробная.



Смотрите на картинку в таком масштабе? А искажения исчезают, если количество точек исходного сигнала на один период колебания будет равно не менее 8. Тогда после интерполяции в 16 и более раз видно нормальную синусоиду.

На предыдущей на синусоиду не похожа картинка. Если график рисовать не точками, а линиями, было яснее ясного в самом начале..
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 2 2011, 18:48
Сообщение #11


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

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



Цитата(ivan219 @ Feb 1 2011, 15:37) *
А искажения исчезают, если количество точек исходного сигнала на один период колебания будет равно не менее 8. Тогда после интерполяции в 16 и более раз видно нормальную синусоиду.

Могу предположить только то, что уже говорил. У вас на первой картинке от точки к точке большие скачки, где-то происходит переполнение чисел, вот и ошибка. Попробуйте увеличить разрядность.
А что синусоида "кривая" - это наверное, от отбрасывания дробных частей, отбрасывания вместо округления.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 2 2011, 20:35
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(АНТОН КОЗЛОВ @ Feb 2 2011, 08:56) *
На предыдущей на синусоиду не похожа картинка. Если график рисовать не точками, а линиями, было яснее ясного в самом начале..


Конечно, не синусоида я об этом и говорил по этому и попросил метод, где учитывается не 4 как в Форроу а больше. А точки понятнее, чем линии, когда линия не поймёшь на каком шаге ошибка.

Цитата(ViKo @ Feb 2 2011, 21:48) *
Могу предположить только то, что уже говорил. У вас на первой картинке от точки к точке большие скачки, где-то происходит переполнение чисел, вот и ошибка. Попробуйте увеличить разрядность.
А что синусоида "кривая" - это наверное, от отбрасывания дробных частей, отбрасывания вместо округления.


Скачки я заметил по этому и спросил другой метод. Переполнения или отбрасывания не происходит. Так как все вычисления на ПК с плавающей точкой двойной точности 32бит и перед выводом на экран всё округляется.

Сообщение отредактировал ivan219 - Feb 2 2011, 20:36
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 3 2011, 07:27
Сообщение #13


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

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



Цитата(ivan219 @ Feb 2 2011, 22:35) *
Скачки я заметил по этому и спросил другой метод. Переполнения или отбрасывания не происходит. Так как все вычисления на ПК с плавающей точкой двойной точности 32бит и перед выводом на экран всё округляется.

Скачки я имел в виду - на исходной синусоиде. Большое изменение, большие числа.
С плавающей арифметикой не возился. Попробуйте с обычной.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 3 2011, 22:34
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Вопрос снят.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 4 2011, 07:48
Сообщение #15


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

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



Цитата(ivan219 @ Feb 4 2011, 00:34) *
Вопрос снят.

Это все, что вы можете сказать? Мне кажется, лучше донести до общественности, что было не так, и как оно разрешилось.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 4 2011, 09:51
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(ViKo @ Feb 4 2011, 10:48) *
Это все, что вы можете сказать? Мне кажется, лучше донести до общественности, что было не так, и как оно разрешилось.


Да тут и говорить не чего. После серии эксперементов пришол к мысли что интерполяция на высоких частотах близких к частоте Найквиста ничего не даст.
Теорему Котельникова надо изучать может вней найду ответ.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 4 2011, 09:56
Сообщение #17


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

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



Цитата(ivan219 @ Feb 4 2011, 11:51) *
После серии эксперементов пришол к мысли что интерполяция на высоких частотах близких к частоте Найквиста ничего не даст.
Теорему Котельникова надо изучать может вней найду ответ.

Теорема Котельникова работает до АЦП, а после него - хоть потоп. Любой оцифрованный сигнал, независимо от того, правильно ли он оцифрован, должен интерполироваться. Попробуйте кубическую интерполяцию с того сайта, что я дал ссылку.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 4 2011, 10:23
Сообщение #18


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(ivan219 @ Feb 4 2011, 11:51) *
Да тут и говорить не чего. После серии эксперементов пришол к мысли что интерполяция на высоких частотах близких к частоте Найквиста ничего не даст.
Теорему Котельникова надо изучать может вней найду ответ.

Я для отображения экспериментальных данных применял Cubic spline interpolation, очень неплохо получилось даже при малом числе отсчетов на период.
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 4 2011, 13:32
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ivan219 @ Feb 4 2011, 12:51) *
Да тут и говорить не чего. После серии эксперементов пришол к мысли что интерполяция на высоких частотах близких к частоте Найквиста ничего не даст.
Теорему Котельникова надо изучать может вней найду ответ.

Если делать интерполяцию с помощью добавления нулей и последующей фильтрации, то все стройно и понятно. Чем длиннее фильтр, тем ближе можно подобраться к частоте Найквиста при прочих равных (точности интерполяции (затухания фильтра вне полосы))

Сообщение отредактировал sup-sup - Feb 4 2011, 13:34
Go to the top of the page
 
+Quote Post
fontp
сообщение Feb 4 2011, 14:28
Сообщение #20


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



QUOTE (sup-sup @ Feb 4 2011, 16:32) *
Если делать интерполяцию с помощью добавления нулей и последующей фильтрации, то все стройно и понятно. Чем длиннее фильтр, тем ближе можно подобраться к частоте Найквиста при прочих равных (точности интерполяции (затухания фильтра вне полосы))


Это естественная интерполяция в целое (обычно фиксированное) число раз.
Не намного сложнее интерполяция/децимация в дробное-рациональное число раз n/m
http://mds.com/tech/filter/multirate_article.pdf
Это почти всегда. Поскольку хоть в университетах мира этому уже не учат, но сто лет назад было показано, что всякое действительное число
можно аппроксимировать дробью n/m с точностью порядка 1/(m*m)

Полиномиальные сплайн-интерполяторы используются только когда коэффициент интерполяции меняется во времени и/или он плохо аппроксимируется дробью c нужной точностью. Для фиксированного коэффициента интерполяции идеально почти всегда дополнить нулями некоторым образом и провести низкочастотную фильтрацию, возможно с децимацией (если коэффициент дробный)
У AD есть высокоточная (с 32-разрядными могучими фильтрами) реализация ресамплинга для звука (для hi-fi звука нужна очень высокая точность не хуже 80-90 дб, а лучше 120 rolleyes.gif )

http://www.analog.com/static/imported-file...s/EE183Rev5.pdf
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 4 2011, 14:42
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(fontp @ Feb 4 2011, 18:28) *
Это естественная интерполяция в целое (обычно фиксированное) число раз.
Не намного сложнее интерполяция/децимация в дробное-рациональное число раз n/m ...

В отладочных целях нормально выполнить понятную интерполяцию в целое число раз, выбрав такой коэффициент и фильтр, чтобы довести до нужной точности при несколько повышенной частоте, а потом (опять же, для отладки) можно применить линейную интерполяцию для передискретизации (можно просто взять ближайшую точку, если предварительная интерполяция выполнена с небольшим запасом). А когда станет понятно, что должно и может быть на выходе можно разобраться с минимизацией процесса.

Сообщение отредактировал sup-sup - Feb 4 2011, 14:46
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 4 2011, 14:46
Сообщение #22


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

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



Думаю, для вывода на монитор сгодится любая интерполяция лучше линейной.

Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 4 2011, 14:52
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ViKo @ Feb 4 2011, 17:46) *
Думаю, для вывода на монитор сгодится любая интерполяция лучше линейной.

Процесс может быть неустойчив. А самая простая интерполяция в n-раз обычно применяет FIR (или вырожденный FIR), что абсолютно устойчиво.
Go to the top of the page
 
+Quote Post
fontp
сообщение Feb 4 2011, 14:58
Сообщение #24


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



QUOTE (sup-sup @ Feb 4 2011, 17:52) *
Процесс может быть неустойчив. А самая простая интерполяция в n-раз обычно применяет FIR (или вырожденный FIR), что абсолютно устойчиво.


Вообще-то сплайн устойчив всегда. Но там неизбежны биения
Для глаза наверно сойдёт, если вопрос не в том что лучше, а в том что проще приспособить готовое
С ФНЧ тоже не так уж сложно, если разобраться

В любом случае ФНЧ предпочтительней, если нужно контролировать точность, но коэффициент не меняется.
Сплайн даёт возможность интерполировать в любых точках (коэффициент меняется), но точность контролировать не даёт

Ну и конечно в любых смыслах (кроме вычислительного) идеален синк. Казалось бы причем здесь теорема Котельникова? rolleyes.gif
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 4 2011, 15:29
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(fontp @ Feb 4 2011, 17:58) *
... Казалось бы причем здесь теорема Котельникова? rolleyes.gif

из одного и того же места ноги растут
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 4 2011, 15:43
Сообщение #26


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

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



Цитата(fontp @ Feb 4 2011, 16:58) *
В любом случае ФНЧ предпочтительней, если нужно контролировать точность, но коэффициент не меняется.
Ну и конечно в любых смыслах (кроме вычислительного) идеален синк.

ФНЧ и синк разве не одно и то же?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 4 2011, 16:41
Сообщение #27


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Ой. как всё запущено...


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 4 2011, 18:02
Сообщение #28


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

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



Если имелись в виду FIR и CIC, тогда да - лоханулся! sm.gif Искуплю чтением предоставленных документов.

Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 4 2011, 22:11
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Эксперемент с полиномами Лагранжа

Сообщение отредактировал ivan219 - Feb 4 2011, 22:24
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
bahurin
сообщение Feb 5 2011, 04:59
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Цитата(ivan219 @ Feb 5 2011, 01:11) *
Эксперемент с полиномами Лагранжа


мне показалось или вы полиномы стыкуете не в точках отсчета?
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 5 2011, 10:29
Сообщение #31


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(bahurin @ Feb 5 2011, 07:59) *
мне показалось или вы полиномы стыкуете не в точках отсчета?


На первом и третьем так и есть сразу не заметил, пришлось подправить код. Остальные чётко стыкуются.

Я вот что подумал если проводить интерполяцию с добавлением нулей, то, как лучше это сделать два раза по 2 или один раз на 4? Нужно как можно ближе подойти к частоте Найквиста.

Сообщение отредактировал ivan219 - Feb 5 2011, 10:26
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 5 2011, 11:34
Сообщение #32


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ivan219 @ Feb 5 2011, 13:29) *
На первом и третьем так и есть сразу не заметил, пришлось подправить код. Остальные чётко стыкуются.

Я вот что подумал если проводить интерполяцию с добавлением нулей, то, как лучше это сделать два раза по 2 или один раз на 4? Нужно как можно ближе подойти к частоте Найквиста.

Каскадно лучше. Вначале поднимаем частоту вдвое (вставим по одному нулю) и применим наиболее длинный фильтр на самой низкой частоте (на удвоенной), который и будет определяющим для приближения к Найквисту. Следующие фильтры будут работать на более высоких частотах, но и могут быть значительно короче. А если сразу на учетверенной частоте -то нужно будет взять вдвое более длинный фильтр на учетверенной частоте (ресурса вчетверо больше).

Сообщение отредактировал sup-sup - Feb 5 2011, 11:37
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 5 2011, 12:59
Сообщение #33


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Спасибо я так и подумал. Так больше места для манёвра. Лан буду пробовать. Этим методом частоту подыму в 4 раза а потом и Форроу справится так как будет уже не менее 8 семплом на периуд.

Ещё интересует. Какую оконную функцию применить что бы подавление было на уровне 60 - 100 дБ и при этом ширена перехода была минемальной?
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 5 2011, 13:51
Сообщение #34


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ivan219 @ Feb 5 2011, 16:59) *
Спасибо я так и подумал. Так больше места для манёвра. Лан буду пробовать. Этим методом частоту подыму в 4 раза а потом и Форроу справится так как будет уже не менее 8 семплом на периуд.

Ещё интересует. Какую оконную функцию применить что бы подавление было на уровне 60 - 100 дБ и при этом ширена перехода была минемальной?

Если пользоваться в Симулинке мастером FDATool, то там есть варианты, в том числе и конкретные окна. Я пользуюсь обычно Гауссовским, так как им легко управлять. Для затухания 60-100 дБ нужны коэффициенты от 3.2 до 4.3. А переходная полоса, кроме выбранного затухания, зависит от длины (порядка) фильтра. Нужно выбрать минимально возможное затухание вне полосы (по необходимой точности) и максимально возможную (по имеющимся ресурсам) длину фильтра.
Кстати, FDATool имеет возможность расчета 'Interpolated FIR', где можно сделать и увидеть хатактеристику каскадного фильтра целиком.

Сообщение отредактировал sup-sup - Feb 5 2011, 13:57
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 6 2011, 10:24
Сообщение #35


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

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



Что-то я не понял - вы фильтр делаете или интерполятор?
Если оцифровали сигнал согласно теореме Котельникова, ничего лишнего в сигнале не будет. Любая интерполяция сгладит сигнал, в меру своих возможностей.
Если оцифровывался сигнал без аналогового фильтра, и в нем были составляющие выше fs/2, то уже никакими фильтрами, интерполяторами сигнал не улучшить. Разве что подавить наложение спектров около fs/2 фильтром НЧ вместе с полезным сигналом.

Цитата(_Anatoliy @ Feb 4 2011, 12:23) *
Я для отображения экспериментальных данных применял Cubic spline interpolation, очень неплохо получилось даже при малом числе отсчетов на период.

Не подскажете где посмотреть, как это делается?
Go to the top of the page
 
+Quote Post
vetal
сообщение Feb 6 2011, 10:35
Сообщение #36


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
Не подскажете где посмотреть, как это делается?

http://habrahabr.ru/blogs/php/111402/
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 6 2011, 10:59
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(ViKo @ Feb 6 2011, 13:24) *
Что-то я не понял - вы фильтр делаете или интерполятор?


Интерполятор. Но хороший с фильтром, что бы сигнал на выходе был красивым, а не похож на рыбу biggrin.gif

В принципе с выбором фильтра разобрался, пришлось взять 2000 порядка, что бы полоса перехода вошла в 600Гц при частоте дискретизации 96кГц, а оконную функцию взял Blackman - Nuttall у неё уровень боковых лепестков 98дБ, так что вполне подходит. С окном Гаусса получается хуже полоса перехода значительно шире.

Сообщение отредактировал ivan219 - Feb 6 2011, 11:06
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 6 2011, 11:13
Сообщение #38


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ViKo @ Feb 6 2011, 13:24) *
Что-то я не понял - вы фильтр делаете или интерполятор?
Если оцифровали сигнал согласно теореме Котельникова, ничего лишнего в сигнале не будет. Любая интерполяция сгладит сигнал, в меру своих возможностей.
Если оцифровывался сигнал без аналогового фильтра, и в нем были составляющие выше fs/2, то уже никакими фильтрами, интерполяторами сигнал не улучшить. Разве что подавить наложение спектров около fs/2 фильтром НЧ вместе с полезным сигналом.

Любой интерполятор имеет фильтр, даже если об этом явно не сказано.
Мы добавляем нолики и эту последовательность (2*Fs) пропускаем через фильтр нижних частот с частотой среза как можно ближе к Fs/2 чтобы использовать как можно более широкую полосу. В окрестности Fs/2 будет задавленный переходный диапазон частот. Это как раз - мера возможностей.
Если в исходной последовательности есть результат наложения, то он останется в любом способе интерполяции.
Никаких противоречий.

Цитата(ivan219 @ Feb 6 2011, 13:59) *
В принципе с выбором фильтра разобрался, пришлось взять 2000 порядка, что бы полоса перехода вошла в 600Гц при частоте дискретизации 96кГц, а оконную функцию взял Blackman - Nuttall у неё уровень боковых лепестков 98дБ, так что вполне подходит. С окном Гаусса получается хуже полоса перехода значительно шире.

Нужно не забыть проверить равномерность в полосе частот. Чтобы был соблюден баланс между искажениями от затухания и искажениями от неравномерности полосы пропускания. На пальцах можно прикинуть, что если мы делаем -100 дБ затухание вне полосы, то эквивалентная неравномерность в полосе должна быть равноценной, то есть, 1/100000 (0.001%).
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 6 2011, 11:27
Сообщение #39


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

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



Цитата(ivan219 @ Feb 6 2011, 12:59) *
Интерполятор. Но хороший с фильтром, что бы сигнал на выходе был красивым, а не похож на рыбу biggrin.gif

А до интерполяции ваш сигнал похож на рыбу?
Даже соединив точки синусоиды отрезками (линейная интерполяция), вы не получите сигнал, похожий на рыбу.
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 6 2011, 16:09
Сообщение #40


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ViKo @ Feb 6 2011, 15:27) *
А до интерполяции ваш сигнал похож на рыбу?
Даже соединив точки синусоиды отрезками (линейная интерполяция), вы не получите сигнал, похожий на рыбу.

Не знаю, как кому, а мне термин 'интерполяция' кажется неточным. Может быть, из-за того, что сразу думаешь о линейной 'интерполяции', а не о восстановлении формы сигнала из исходного, имеющего минимальное число отсчетов. Правильнее было применить термин 'восстановление формы сигнала'.
Интересно, что получится, если посмотреть на спектр сигнала после сплайна. Будут ли у него компоненты выше исходной Fs/2 или нет? Ведь не должно быть.

Сообщение отредактировал sup-sup - Feb 6 2011, 16:10
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 6 2011, 16:25
Сообщение #41


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

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



Цитата(sup-sup @ Feb 6 2011, 18:09) *
Интересно, что получится, если посмотреть на спектр сигнала после сплайна. Будут ли у него компоненты выше исходной Fs/2 или нет? Ведь не должно быть.

Будет, все будет... Только идеальный фильтр НЧ может подавить спектр в областях fold, 2fold, и так до fnew (которая останется).
Так как идеального фильтра сделать невозможно, эти области не подавятся полностью. Нужно ограничиться необходимой точностью.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 6 2011, 16:46
Сообщение #42


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(sup-sup @ Feb 6 2011, 21:09) *
Не знаю, как кому, а мне термин 'интерполяция' кажется неточным. Может быть, из-за того, что сразу думаешь о линейной 'интерполяции', а не о восстановлении формы сигнала из исходного, имеющего минимальное число отсчетов. Правильнее было применить термин 'восстановление формы сигнала'.

Ну дык, замените слово "линейная" на "гармоническая" и вроде всё красиво для понимания.

Собсно, интерполяция = нахождение промежуточных точек. Именно это и происходит.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 6 2011, 18:15
Сообщение #43


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(GetSmart @ Feb 6 2011, 20:46) *
Ну дык, замените слово "линейная" на "гармоническая" и вроде всё красиво для понимания.

Собсно, интерполяция = нахождение промежуточных точек. Именно это и происходит.

Да в общем, это не проблема. Чтобы 'разговор поддержать'. Мало ли каких названий.
Реально и исходные точки сдвигаются со своих мест из-за неидеальности фильтра.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Feb 6 2011, 18:17
Сообщение #44


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Цитата(ViKo @ Feb 6 2011, 14:27) *
А до интерполяции ваш сигнал похож на рыбу?
Даже соединив точки синусоиды отрезками (линейная интерполяция), вы не получите сигнал, похожий на рыбу.

Нет до интерполяции похож на рыбу это когда частота сигнала чуть меньше 0.5 частоты дискретизации когда на один пириуд уходит меньше 3 отсчётов.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 7 2011, 08:03
Сообщение #45


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

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



Цитата(ivan219 @ Feb 6 2011, 20:17) *
Нет до интерполяции похож на рыбу это когда частота сигнала чуть меньше 0.5 частоты дискретизации когда на один пириуд уходит меньше 3 отсчётов.

А как вы думаете, почему? Может быть, не соблюдаются требования теоремы Котельникова?
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 7 2011, 08:16
Сообщение #46


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ViKo @ Feb 7 2011, 12:03) *
А как вы думаете, почему? Может быть, не соблюдаются требования теоремы Котельникова?

Почему же. Будет рыба или много рыб, поедающих одна другую. А после интерполяции будет чистая синусоида. Если на входе чистый синус, то теорема Котельникова отдыхает.

Сообщение отредактировал sup-sup - Feb 7 2011, 08:17
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 7 2011, 09:33
Сообщение #47


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

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



Цитата(sup-sup @ Feb 7 2011, 10:16) *
Если на входе чистый синус, то теорема Котельникова отдыхает.

Теорема Котельникова никогда не отдыхает sm.gif
То, что здесь именуется рыбой - это резкие скачки на интерполированном сигнале, вроде хвоста рыбьего? То есть, вместо того, чтобы соединить точки плавной кривой (полиномиальной, синусоидальной), вдруг - скачек. При чем здесь Котельников? Реализация алгоритма кривая.
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 7 2011, 10:04
Сообщение #48


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ViKo @ Feb 7 2011, 12:33) *
Теорема Котельникова никогда не отдыхает sm.gif
То, что здесь именуется рыбой - это резкие скачки на интерполированном сигнале, вроде хвоста рыбьего? То есть, вместо того, чтобы соединить точки плавной кривой (полиномиальной, синусоидальной), вдруг - скачек. При чем здесь Котельников? Реализация алгоритма кривая.

Хорошо, не отдыхает, а молотит впустую (но правильно).
Это я к тому, что синус всегда остается синусом при линейной обработке.
Я все-таки, подумал, что раз рыба в исходном сигнале, то погрешности интерполяции пока ни при чем.
А рыба всегда есть в исходном сигнале за счет набега фазы между сэмплированием и сигналом.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 7 2011, 10:15
Сообщение #49


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

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



Цитата(sup-sup @ Feb 7 2011, 12:04) *
А рыба всегда есть в исходном сигнале за счет набега фазы между сэмплированием и сигналом.

Но от этого он не становится "не-синусом"? Разве нельзя интерполировать ("восстановить сигнал") синус, оцифрованный по 2,00...1 точкам на период? Котельников говорит, что можно. А мы не можем... sad.gif Так какой вывод следует? Правильно - плохо восстанавливаем sm.gif
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 7 2011, 10:52
Сообщение #50


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ViKo @ Feb 7 2011, 14:15) *
Но от этого он не становится "не-синусом"? Разве нельзя интерполировать ("восстановить сигнал") синус, оцифрованный по 2,00...1 точкам на период? Котельников говорит, что можно. А мы не можем... sad.gif Так какой вывод следует? Правильно - плохо восстанавливаем sm.gif

Или не можем восстановить, так как 'рыбный' период значительно больше длины выборки (или возможного фильтра, или нам этого и не надо чаще всего, то есть мы неправильно (нерационально) выбрали частоту дискретизации. Это же не скорость света, которой нельзя управлять).

Сообщение отредактировал sup-sup - Feb 7 2011, 10:52
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 7 2011, 18:28
Сообщение #51


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

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



Цитата(sup-sup @ Feb 7 2011, 12:52) *
Или не можем восстановить, так как 'рыбный' период ...

Про "рыбу" так и не понял ничего. sm.gif
А возник один вопрос. Если мы знаем, что у нас оцифрован синус, так почему бы нам и не интерполировать точки синусом!? Не полиномом каким-то "левым"... Только как это сделать?
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Feb 7 2011, 19:36
Сообщение #52


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(ViKo @ Feb 7 2011, 21:28) *
Про "рыбу" так и не понял ничего. sm.gif
А возник один вопрос. Если мы знаем, что у нас оцифрован синус, так почему бы нам и не интерполировать точки синусом!? Не полиномом каким-то "левым"... Только как это сделать?

"Рыбный" вопрос в картинках.
Очевидно, что длина фильтра интерполятора должна быть значительно больше периода биений частоты дискретизации и сигнала (в примере, синуса). Ясное дело, что вплотную приблизиться к частоте Найквиста можно только при ООООчень длинной ИХ фильтра.


Сообщение отредактировал sup-sup - Feb 7 2011, 19:43
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 7 2011, 20:05
Сообщение #53


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

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



Цитата(sup-sup @ Feb 7 2011, 21:36) *
"Рыбный" вопрос в картинках.

Понял. Признаю - такое полиномом не восстановить. sad.gif
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Feb 8 2011, 04:42
Сообщение #54


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Если речь идёт о звуке, то для отображения волны рекомендуется использовать такой же порядок интерполятора, как и в ЦАП, т.е. 20–30. В этом случае на экране будет видно то же, что и слышно.
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 Текстовая версия Сейчас: 3rd September 2025 - 08:53
Рейтинг@Mail.ru


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