
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.91] |
![]() |
|
Сообщ.
#1
,
|
|
|
Требуется провести передесктизацию сигнала в диапазон звуковых частот для воспроизведения. Исходная частота может произвольной, как ниже и выше.
Алгоритм в принципе известен. При повышение частоты сигнала требуется КИХ фильтр. Но так как требуется большое подавление, большая полоса пропускания и крутизна то порядок такого фильтра получается очень большим, что меня настораживает. Подскажи пути решения данной проблемы. |
Сообщ.
#2
,
|
|
|
1. Линейная или нелинейная интерполяция
2. Интерполяция сплайнами(Фильтрация сплайнами) 3. БИХ 4. Рекурсивный КИХ фильтр.(По этапное повышение частоты). |
Сообщ.
#3
,
|
|
|
1-5 я это всё знаю
1. Линейная или нелинейная интерполяция. Можно использовать только для сигналов с низкой частотой, иначе искажения слышно |
Сообщ.
#4
,
|
|
|
rodion
А что вы ещё хотите услышать? Можете использовать глубокое обучение там за счёт правильно подобранного датасета можно получить более качественные результаты чем sinc. |
Сообщ.
#5
,
|
|
|
Цитата Pavia @ по крайней мере на сигналах, сходных с сигналами из этогоМожете использовать глубокое обучение там за счёт правильно подобранного датасета можно получить более качественные результаты чем sinc. датасета. Цитата rodion @ Насколько сильно надо менять частоту дискретизации? Не забывай, на большинстве входов сумматора передискретизирующего КИХ-фильтра оказываются нули. А если частоты не кратные, а просто в рациональном соотношении, то ещё и не все выходные отсчёты этого фильтра нужно вычислять.порядок такого фильтра получается очень большим, что меня настораживает. КИХ-фильтр, кстати, просто выполняет интерполирование сигнала. |
Сообщ.
#6
,
|
|
|
А что вы ещё хотите услышать?
Ну явно же я тут велосипед изобретаю, и хотелось бы услышать советы, что бы он был как можно менее костыльным |
Сообщ.
#7
,
|
|
|
Цитата rodion @ Так ты проблему не написал. Написал только, что тебе передискретизация нужна. Тебе несколько вариантов, первых пришедших на ум назвали.хотелось бы услышать советы, что бы он был как можно менее костыльным Что я понял из первого поста. У тебя есть сигнал - не звуковой. Может ультразвук, может механические колебания. Ты хочешь по нему сгенерировать сигнал в слышимой области. Возможно в реальном масштабе времени. Обычно для этого производят сдвиг частоты. При этом может потребоваться ещё и изменение частоты дискретизации. Иногда исходная полоса частот слишком узкая или наоборот слишком широкая. В таком случае понадобится ещё и масштабирование частот - это уже нелинейное преобразование, с этим сложнее (я вообще не знаю, как это сделать, кроме как гребёнкой фильтров, да и то не уверен, что так работает). |
Сообщ.
#8
,
|
|
|
Сдвиг частоты мне не нужен. Только изменение частоты дискретизации, но так что бы искажения не были заметны на слух. А это оказалось жёсткие требования. Что бы их выполнить нужно ли городить большой интерполиующий фильтр или дополнительно фильтровать. И если фильтровать то чем.
P.S. масштабирование частот - можно выполнить возведение в степень. |
Сообщ.
#9
,
|
|
|
Цитата rodion @ Это работает только для чистых гармоник. Для сложных сигналов, на выходе появляются сигналы с разностной и суммарной частотой.масштабирование частот - можно выполнить возведение в степень. У тебя в исходном сигнале с редкой дискретизацией уже искажения. Передискретизация ничего не изменит. Если сигнал допускает задержку, то меньше всего искажений вносит фильтр Ланцоша (из относительно простых фильтров). Чем шире окно, тем лучше. Если соотношение исходной частоты дискретизации и конечной рациональное, лучше предвычислить веса. Вместо Ланцоша в качестве весовой функции можно попробовать произведение окна Блэкмана (или другого) на sinc-функцию, искажений должно стать ещё меньше. |
Сообщ.
#10
,
|
|
|
фильтр Ланцоша вполне ничего получилось. Эквалайзером подравнять только
|