2013-07-22 3 views
3

У меня есть wav-файл, который был импортирован в MATLAB и является образцом на 44,1 кГц. Я пытаюсь переделать этот аудиофайл до 22.05 кГц, а затем восстановить его до 44.1 кГц. Тем не менее, я смущен тем, как использовать функцию resample в MATLAB, и если это даже функция, которую я должен использовать для этого. Любая помощь будет принята с благодарностью. Спасибо!Resampling Audio в MATLAB

+1

Я не эксперт по matlab, но я уверен, что это зависит от того, чего вы пытаетесь достичь. Возможно, вам захочется объяснить, почему вы снижаете дискретизацию, а затем повышаете выборку до того места, где вы начали. Единственное, на что вы можете надеяться добиться этого, - это ухудшить ваш сигнал. –

+0

Причина, по которой я это делаю, - это проверка надежности моего водяного знака для повторной выборки. – Math244

ответ

7

Да, resample - это ваша функция. Для декодируют x от 44100 Гц до 22050 Гц:

y = resample(x,1,2); 

(в "1" и "2" аргументы определяют отношение передискретизации: 22050/44100 = 1/2)

для повышения частоты дискретизации обратно на 44100 Гц :

x2 = resample(y,2,1); 

Обратите внимание, что функция resample включает в себя необходимое сглаживании (фильтр нижних частот).

Как вы, наверное, знаете, «восстановленный» сигнал x2 потерял самую высокочастотную информацию, которая могла присутствовать в x.

+3

Или сделать это явным, если кто-то еще читает ваш код, вы можете использовать 'y = resample (x, 22050,44100);' и 'x2 = resample (y, 44100,22050);' –

+0

Спасибо, я добавил комментарий, чтобы уточнить, что –

+0

Поскольку понижающая дискретизация равна половине скорости, вы также можете просто сделать y = x (1: 2: end) ' –