Повторная дискретизация равномерно дискретизированных сигналов

Этот пример показывает, как переопределить равномерно дискретизированный сигнал к новой однородной скорости. Это показывает, как уменьшить влияние больших переходных процессов, а также как удалить нежелательные высокие частоты содержимого.

Преобразование скорости рациональным фактором

The resample функция выполняет преобразование скорости из одной частоты дискретизации в другую. resample позволяет вам повышать значение интегральным фактором, p, и впоследствии децимируется другим интегральным фактором, q. Таким образом можно сбросить к рациональному кратному (p / q) исходной частоты дискретизации.

Как использовать resample функция на равномерных выборках, вы должны предоставить и числитель, и знаменатель этого рационального фактора. Чтобы определить необходимые целые числа, можно использовать rat функция.

Вот пример того, как позвонить rat при переводе с 48 кГц на 44,1 кГц:

originalFs = 48000;
desiredFs = 44100;

[p,q] = rat(desiredFs / originalFs)
p = 147
q = 160

rat указывает, что вы можете увеличить значение на 147 и децимировать на 160. Чтобы убедиться, что это создает желаемую скорость, умножите p / q по исходной частоте дискретизации:

originalFs * p / q
ans = 44100

Если у вас есть отношение между новой и исходной частотой дискретизации, можно вызвать resample.

Например, создайте синусоиду длиной 10 миллисекунд 500 Гц с помощью исходной частоты дискретизации 48 кГц и преобразуйте ее в 44,1 кГц:

tEnd = 0.01;
Tx = 0:1/originalFs:tEnd;
f = 500;
x = sin(2*pi*f*Tx);

y = resample(x,p,q);
Ty = (0:numel(y)-1)/desiredFs;

plot(Tx,x,'. ')
hold on
plot(Ty,y,'o ')
hold off
legend('Original','Resampled')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Resampled.

Для хорошо поведеных сигналов, таких как синусоида выше, просто используйте resample с тщательно выбранным p и q должно быть достаточно, чтобы восстановить его должным образом.

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

Фильтрация переходных процессов

The resample функция использует фильтр, когда выполняет преобразование скорости. Эта фильтрация чувствительна к большим переходным процессам в сигнале.

Чтобы проиллюстрировать это, повторно попробуйте прямоугольный импульс:

x = [zeros(1,120) ones(1,241) zeros(1,120)];
y = resample(x,p,q);

plot(Tx,x,'-', Ty,y,'-')
legend('Original','Resampled')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Resampled.

Функция хорошо справляется с восстановлением плоских областей импульса. Однако на ребрах импульса имеются всплески.

Масштабирование по ребру первого импульса:

xlim([2e-3 3e-3])

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Resampled.

В переходной области происходит демпфирование колебаний. Можно уменьшить это колебание, настроив настройки внутреннего фильтра.

resample позволяет управлять окном Кайзера, примененным к сглаживающему фильтру, который может уменьшить некоторые эффекты ребра.

Два параметра, n и beta, управляйте относительной длиной фильтра и количеством сглаживания, которое он пытается выполнить. Большее значение n будет иметь большую длину фильтра. A beta из 0 не будет дополнительного сглаживания. Большие beta значения будут иметь большее сглаживание. По умолчанию n равен 10 и beta равен 5.

Практическим способом продолжения является начало со значений по умолчанию и корректировка по мере необходимости. Здесь задайте n до 5 и beta до 20.

n = 5;
beta = 20;

y = resample(x,p,q,n,beta);

plot(Tx,x,'.-')
hold on
plot(Ty,y,'o-')
hold off
legend('Original','Resampled')
xlim([2e-3 3e-3])

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Resampled.

Колебание значительно уменьшается.

Фильтрация псевдонимов

The resample функция предназначена для преобразования частот дискретизации в более высокие или более низкие скорости. Как следствие, частотная отсечка сглаживающего фильтра устанавливается на частоту Найквиста входной или выходной частоты дискретизации (в зависимости от того, какая из них ниже). Эта настройка по умолчанию позволяет resample функция для охвата широкой области значений применений.

Бывают случаи, когда непосредственное управление фильтром может быть полезным.

Чтобы проиллюстрировать это, создайте и просмотрите спектрограмму щебета-сигнала, дискретизированного с частотой 96 кГц. Сигнал щебета состоит из синусоиды, частота которой изменяется квадратично на протяжении всей области значений Найквиста от 0 Гц до 48 кГц в длительность восьми секунд:

fs1 = 96000;
t1 = 0:1/fs1:8;
x = chirp(t1, 0, 8, fs1/2, 'quadratic');
spectrogram(x,kaiser(256,15),220,412,fs1,'yaxis')

Figure contains an axes. The axes contains an object of type image.

Далее преобразуйте щебет в 44,1 кГц с помощью настроек по умолчанию resample и просмотрите спектрограмму:

fs2 = 44100;

[p,q] = rat(fs2/fs1);
y = resample(x,p,q);

spectrogram(y,kaiser(256,15),220,412,fs2,'yaxis')

Figure contains an axes. The axes contains an object of type image.

Здесь вы можете увидеть исходный сигнал, а также нежелательное содержимое. В идеале синусоида должна начинаться с 0 Гц и продолжаться до тех пор, пока она не достигнет частоты Найквиста 22,05 кГц в 5,422 с. Вместо этого существуют программные продукты, введенные из-за небольших разрывов, введенных на ребрах фильтра по умолчанию, используемого для повторной дискретизации. Чтобы предотвратить эти программные продукты, можно предоставить более длинный фильтр с несколько меньшей частотой отключения и большим отклонением полосы упора, чем фильтр по умолчанию.

Чтобы иметь правильное временное выравнивание, фильтр должен иметь нечетную длину. Длина должна быть в несколько раз больше p или q (в зависимости от того, какая величина больше). Точно так же разделите необходимую нормированную частоту среза на большую из p или q. В любом случае умножьте получившиеся коэффициенты на p.

Вот пример фильтра с отсечкой на 98% (0,98) выходной частоты Найквиста с порядком 256 раз больше коэффициента десятикратного уменьшения, оконченным окном Кайзера с beta из 12.

normFc = .98 / max(p,q);
order = 256 * max(p,q);
beta = 12;

lpFilt = firls(order, [0 normFc normFc 1],[1 1 0 0]);
lpFilt = lpFilt .* kaiser(order+1,beta)';
lpFilt = lpFilt / sum(lpFilt);

% multiply by p
lpFilt = p * lpFilt;

% resample and plot the response
y = resample(x,p,q,lpFilt);
spectrogram(y,kaiser(256,15),220,412,fs2,'yaxis')

Figure contains an axes. The axes contains an object of type image.

Обратите внимание, что псевдонимы удаляются.

Дальнейшее чтение

Для получения дополнительной информации о повторной дискретизации см. Signal Processing Toolbox.

Ссылка: fredric j harris, «Multirate Signal Processing for Коммуникационные Системы», Prentice Hall, 2004.

См. также

| |