Изменение скорости выборки сигнала

Этот пример показывает, как изменить частоту дискретизации сигнала. Пример имеет две части. Часть первая изменяет частоту дискретизации синусоидального входа с 44,1 кГц до 48 кГц. Этот рабочий процесс является общим для обработки звука. Частота дисков, используемых на компакт-дисках, составляет 44,1 кГц, в то время как частота дисков, используемых на цифровой аудиокассете, составляет 48 кГц. Часть вторая изменяет частоту дискретизации записанной речевой выборки с 7418 Гц до 8192 Гц.

Создайте входной сигнал, состоящий из суммы синусоид, дискретизированных на 44,1 кГц. Синусоиды имеют частоты 2, 4 и 8 кГц.

Fs = 44.1e3;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*2000*t) + 1/2*sin(2*pi*4000*(t-pi/4)) + ...
    1/4*cos(2*pi*8000*t);

Чтобы изменить частоту дискретизации от 44,1 до 48 кГц, вы должны определить рациональное число (отношение целых чисел), P/Q, таким образом P/Q умножение исходной частоты дискретизации 44100 на 48000 в пределах некоторого заданного допуска.

Чтобы определить эти факторы, используйте rat. Введите отношение новой частоты дискретизации 48000 к исходной скорости дискретизации 44100.

[P,Q] = rat(48e3/Fs);
abs(P/Q*Fs-48000)
ans = 7.2760e-12

Видишь, что P/Q*Fs отличается только от желаемой частоты дискретизации, 48000, по порядку 10-12.

Используйте числитель и знаменатели, полученные с rat в качестве входов в resample для вывода формы волны, дискретизированной с частотой дискретизации 48 кГц.

xnew = resample(x,P,Q);

Если компьютер может воспроизводить аудио, можно воспроизвести две формы волны. Установите громкость на комфортный уровень перед воспроизведением сигналов. Выполните sound команды отдельно, так что вы можете услышать сигнал с двумя различными скоростями дискретизации.

% sound(x,44100)
% sound(xnew,48000)

Измените частоту дискретизации речевой выборки с 7418 Гц до 8192 Гц. Речевой сигнал является записью динамика, говорящего «MATLAB ®».

Загрузите речевую выборку.

load mtlb

Загрузка файла mtlb.mat подает речевой сигнал, mtlb, и частоту дискретизации, Fs, в рабочее пространство MATLAB.

Определите рациональное приближение к отношению новой частоты дискретизации 8192 к исходной скорости дискретизации. Использование rat для определения приближения.

[P,Q] = rat(8192/Fs);

Повторная выборка речи с новой частотой дискретизации. Постройте график двух сигналов.

mtlb_new = resample(mtlb,P,Q);

subplot(2,1,1)
plot((0:length(mtlb)-1)/Fs,mtlb)
subplot(2,1,2)
plot((0:length(mtlb_new)-1)/(P/Q*Fs),mtlb_new)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Если ваш компьютер имеет возможность выхода аудио, можно воспроизвести две формы волны с соответствующей частотой дискретизации для сравнения. Установите громкость на компьютере на комфортный уровень прослушивания перед воспроизведением звуков. Выполните sound команды отдельно для сравнения речевых выборок с различными скоростями дискретизации.

% sound(mtlb,Fs)
% sound(mtlb_new,8192)

См. также