Коэффициенты повторной выборки слишком велики

У меня есть большой вектор записанных данных, которые мне нужно передискретизировать. Проблема, с которой я сталкиваюсь, заключается в том, что при использовании resample я получаю следующую ошибку:

??? Ошибка при использовании ==> upfirdn at 82 Произведение коэффициента понижающей дискретизации Q и коэффициента повышающей дискретизации P должно быть меньше 2^31.

Теперь я понимаю, почему это происходит — мои две частоты дискретизации очень близки друг к другу, поэтому целочисленные коэффициенты должны быть довольно большими (что-то вроде 73999/74000). К сожалению, это означает, что соответствующий фильтр не может быть создан в MATLAB. Я также попытался выполнить повторную выборку только вверх, с намерением затем выполнить повторную выборку вниз, но памяти недостаточно, чтобы сделать это даже для 1 миллиона выборок данных (у меня 93M).

Какие другие методы я могу использовать для правильной повторной выборки этих данных?


person David K    schedule 03.11.2014    source источник
comment
Можно ли применить resample дважды?   -  person Rashid    schedule 03.11.2014
comment
@Kamtal Как бы вы применили это дважды? Использовать меньшие отношения, которые, когда они выполняются последовательно, эквивалентны тому, что я хочу? Я пытался сделать самый простой вариант этого, начиная только с повышения частоты дискретизации, затем с понижением частоты дискретизации, но у меня недостаточно памяти для этого.   -  person David K    schedule 03.11.2014
comment
Написать свой? В этом документе содержится хорошее описание того, как реализовать надежный ресемплер.   -  person AnonSubmitter85    schedule 03.11.2014
comment
какова длина ваших данных?   -  person Rashid    schedule 03.11.2014
comment
@Kamtal Около 93 миллионов, как я сказал в своем вопросе.   -  person David K    schedule 03.11.2014
comment
С 93 million сэмплами и 73999 / 74000 повторным сэмплированием вы потеряете около 1300 семплов. Даже если вам удастся спроектировать этот фильтр, значение большинства ваших семплов не изменится. Поэтому я предлагаю вам выбрать подмножество, такое как 1 million, и пересэмплировать его с помощью 0.9987. будет ли это работать?   -  person Rashid    schedule 03.11.2014
comment
Насколько маленьким должен быть набор данных, чтобы он работал? Будет ли он работать на ~100 000 образцов?   -  person Trogdor    schedule 03.11.2014


Ответы (1)


Интерполированный многофазный КИХ-фильтр можно использовать для интерполяции только нового набора точек выборки без использования процесса повышающей и понижающей дискретизации.

Но если производительность совершенно не важна, вот быстрый и грязный оконный интерполятор Sinc в Basic.

person hotpaw2    schedule 03.11.2014