У меня есть wav-файл, который был импортирован в MATLAB и является образцом на 44,1 кГц. Я пытаюсь переделать этот аудиофайл до 22.05 кГц, а затем восстановить его до 44.1 кГц. Тем не менее, я смущен тем, как использовать функцию resample в MATLAB, и если это даже функция, которую я должен использовать для этого. Любая помощь будет принята с благодарностью. Спасибо!Resampling Audio в MATLAB
ответ
Да, resample
- это ваша функция. Для декодируют x
от 44100 Гц до 22050 Гц:
y = resample(x,1,2);
(в "1" и "2" аргументы определяют отношение передискретизации: 22050/44100 = 1/2)
для повышения частоты дискретизации обратно на 44100 Гц :
x2 = resample(y,2,1);
Обратите внимание, что функция resample
включает в себя необходимое сглаживании (фильтр нижних частот).
Как вы, наверное, знаете, «восстановленный» сигнал x2
потерял самую высокочастотную информацию, которая могла присутствовать в x
.
Или сделать это явным, если кто-то еще читает ваш код, вы можете использовать 'y = resample (x, 22050,44100);' и 'x2 = resample (y, 44100,22050);' –
Спасибо, я добавил комментарий, чтобы уточнить, что –
Поскольку понижающая дискретизация равна половине скорости, вы также можете просто сделать y = x (1: 2: end) ' –
Я не эксперт по matlab, но я уверен, что это зависит от того, чего вы пытаетесь достичь. Возможно, вам захочется объяснить, почему вы снижаете дискретизацию, а затем повышаете выборку до того места, где вы начали. Единственное, на что вы можете надеяться добиться этого, - это ухудшить ваш сигнал. –
Причина, по которой я это делаю, - это проверка надежности моего водяного знака для повторной выборки. – Math244