Изменение частоты дискретизации сигнала

В этом примере показано, как изменить частоту дискретизации сигнала. Пример имеет две части. Часть первая изменяет частоту дискретизации синусоидального входа с 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, на порядке 10-12.

Используйте числитель и факторы знаменателя, полученные с 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)

Смотрите также