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

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

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

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

Измените частоту дискретизации речевой выборки с 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)

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)

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