2014-11-03 9 views
3

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

??? Error using ==> upfirdn at 82 The product of the downsample factor Q and the upsample factor P must be less than 2^31.

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

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

+0

Можно ли применить 'resample' дважды? – Rashid

+0

@Kamtal Как вы бы применили его дважды? Используйте меньшие коэффициенты, которые, когда они выполняются последовательно, эквивалентны тому, что я желаю? Я пробовал простейшую версию этого, начиная с восходящей выборки, затем с понижающей дискретизации, но для этого у меня недостаточно памяти. –

+0

Напишите свой собственный? [Этот документ] (http://www.ucalgary.ca/engo_webdocs/SpecialPublications/KIS%2001/PDF/1002.PDF) дает хорошее описание того, как реализовать надежный повторитель. – AnonSubmitter85

ответ

0

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

Но если производительность совершенно неважная, вот Quick and Dirty windowed-Sinc interpolator in Basic.

Смежные вопросы