Этот пример показывает, как изменить частоту дискретизации сигнала. Пример имеет две части. Часть первая изменяет частоту дискретизации синусоидального входа с 44,1 кГц до 48 кГц. Этот рабочий процесс распространен в обработке аудиоданных. Частота дискретизации, используемая на компакт-дисках, составляет 44,1 кГц, в то время как частота дискретизации, используемая на цифровой аудиоленте, составляет 48 кГц. Часть вторая изменяет частоту дискретизации записанной речевой выборки с 7 418 Гц до 8 192 Гц.
Создайте входной сигнал, состоящий из суммы синусоид, выбранных на уровне 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, равны 48 000 в некотором заданном допуске.
Чтобы определить эти факторы, используйте rat
. Введите отношение новой частоты дискретизации, 48000, к исходной частоте дискретизации, 44100.
[P,Q] = rat(48e3/Fs); abs(P/Q*Fs-48000)
ans = 7.2760e-12
Вы видите, что P/Q*Fs
только отличается от желаемой частоты дискретизации, 48000, на порядке .
Используйте числитель и факторы знаменателя, полученные с rat
как входные параметры к resample
, чтобы вывести форму волны, выбранную на уровне 48 кГц.
xnew = resample(x,P,Q);
Если ваш компьютер может проигрывать аудио, можно проигрывать эти две формы волны. Регулируйте громкость к удобному уровню, прежде чем вы будете проигрывать сигналы. Выполните команды play
отдельно так, чтобы можно было услышать сигнал с двумя различными частотами дискретизации.
% P44_1 = audioplayer(x,44100); % P48 = audioplayer(xnew,48000); % play(P44_1) % play(P48)
Измените частоту дискретизации речевой выборки с 7 418 Гц до 8 192 Гц. Речевой сигнал является записью динамика, говорящего "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)
Если ваш компьютер имеет возможность аудиовыхода, можно проигрывать эти две формы волны на уровне их соответствующих частот дискретизации для сравнения. Регулируйте громкость на своем компьютере к удобному уровню слушания прежде, чем проигрывать звуки. Выполните команды play
отдельно, чтобы сравнить речевые выборки на уровне различных частот дискретизации.
% Pmtlb = audioplayer(mtlb,Fs); % Pmtlb_new = audioplayer(mtlb_new,8192); % play(Pmtlb) % play(Pmtlb_new)