exponenta event banner

dsp. FIRRateConverter

Преобразователь частоты дискретизации

Описание

dsp.FIRRateConverter Система object™ выполняет преобразование частоты дискретизации рациональным коэффициентом на векторном или матричном входе. Преобразователь скорости КИХ каскадирует интерполятор с прореживателем. Преобразователь скорости (как показано на схеме) концептуально состоит из устройства повышающей дискретизации, за которым следует комбинированный фильтр FIR против формирования изображения и сглаживания, за которым следует устройство понижающей дискретизации. Чтобы сконструировать фильтр FIR, который действует как комбинированный фильтр FIR против визуализации и сглаживания, используйте designMultirateFIR функция. Пример см. в разделе Повторная выборка сигнала с помощью преобразователя скорости КИХ.

Повышающая дискретизация увеличивает частоту дискретизации сигнала на коэффициент L, а понижающая дискретизация уменьшает частоту дискретизации сигнала на коэффициент M. Используйте повышающие и понижающие коэффициенты дискретизации, которые являются относительно простыми или параллельными. Результирующий дискретно-временной сигнал имеет частоту дискретизации, которая в L/M раз больше исходной частоты дискретизации.

FIR rate converter contains an upsampler followed by an anti-imaging, anti-aliasing FIR filter, followed by a downsampler.

Заметим, что алгоритм фактического объекта реализует многофазную структуру, эффективный эквивалент объединенной системы, изображенной на диаграмме. Дополнительные сведения см. в разделе Алгоритмы.

Для выполнения преобразования частоты дискретизации:

  1. Создать dsp.FIRRateConverter и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

firrc = dsp.FIRRateConverter возвращает преобразователь частоты дискретизации FIR, firrc, который производит повторную выборку входного сигнала со скоростью, в 3/2 раза превышающей первоначальную частоту дискретизации.

пример

firrc = dsp.FIRRateConverter(L,M,NUM) возвращает преобразователь частоты дискретизации FIR, firrc, с InterpolationFactor свойство имеет значение L, DecimationFactor свойство имеет значение M, и Numerator свойство имеет значение NUM.

firrc = dsp.FIRRateConverter(___,Name,Value) возвращает преобразователь частоты дискретизации FIR с дополнительными свойствами, заданными одним или несколькими Name,Value аргументы пары.

Пример: firrc = dsp.FIRRateConverter('FullPrecisionOverride','false') позволяет управлять типами данных с фиксированной точкой с помощью отдельных настроек свойств с фиксированной точкой.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Коэффициент интерполяции L, заданный как положительное целое число.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Коэффициент прореживания M, заданный как положительное целое число.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте коэффициенты КИХ-фильтра как вектор строки в степенях z-1.

Следующее уравнение определяет передаточную функцию фильтра:

H (z) =∑n=0Nb (n) z − n

Вектор b = [b (0), b (1),..., b (N)] представляет вектор коэффициентов фильтра.

Использование нижних частот с нормированной частотой отсечения не более min(1/L,1/M)где L - коэффициент интерполяции, а M - коэффициент прореживания. Коэффициент усиления фильтра нижних частот должен быть равен L, коэффициенту интерполяции. Выберите длину фильтра, кратную коэффициенту интерполяции. Чтобы сконструировать такой фильтр, используйте designMultirateFIR функция. Пример см. в разделе Повторная выборка сигнала с помощью преобразователя скорости КИХ. Все начальные состояния фильтра равны нулю.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Свойства с фиксированной точкой

Укажите, следует ли использовать правила полной точности. Если установить FullPrecisionOverride кому trueпо умолчанию объект вычисляет все внутренние арифметические и выходные типы данных с использованием правил полной точности. Эти правила обеспечивают наиболее точные числа фиксированных точек. Он также отключает отображение других свойств фиксированной точки, поскольку они не применяются по отдельности. Эти правила гарантируют, что квантование не происходит внутри объекта. При необходимости добавляются биты, чтобы гарантировать отсутствие скругления или переполнения. Если установить FullPrecisionOverride кому falseтипы данных с фиксированной точкой управляются с помощью отдельных настроек свойств с фиксированной точкой. Дополнительные сведения см. в разделе Полная точность для системных объектов с фиксированной точкой.

Укажите метод округления как один из | Ceiling | Convergent | Floor | Nearest | Round | Simplest | Zero |.

Зависимости

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

Укажите действие переполнения как одно из | Wrap | Saturate |.

Зависимости

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

Укажите тип данных с фиксированной точкой коэффициента фильтра как один из | Same word length as input | Custom |.

Укажите тип фиксированной точки коэффициента фильтра как numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

Это свойство применяется только в том случае, если CoefficientsDataType свойство - Custom.

Укажите тип данных продукта с фиксированной точкой как один из | Full precision | Same as input | Custom |.

Укажите тип фиксированной точки продукта как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

Это свойство применяется только в том случае, если ProductDataType свойство - Custom.

Укажите тип данных с фиксированной точкой в накопителе как один из | Full precision | Same as product | Same as input | Custom |.

Укажите тип фиксированной точки накопителя как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

Это свойство применяется только в том случае, если AccumulatorDataType свойство - Custom.

Укажите выходной тип данных с фиксированной точкой как один из | Same as accumulator | Same as product | Same as input | Custom |.

Укажите тип выходной фиксированной точки как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

Это свойство применяется только в том случае, если OutputDataType свойство - Custom.

Использование

Синтаксис

Описание

пример

y = firrc(x) повторная выборка входных данных x и возвращает повторно дискретизированный сигнал y.

Входные аргументы

развернуть все

Ввод данных, заданный как вектор столбца или матрица. Количество входных строк P должно быть кратным коэффициенту прореживания M. Входной сигнал матрицы P-by-Q рассматривается как Q независимые каналы.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного номера: Да

Выходные аргументы

развернуть все

Результат повторной выборки, возвращаемый в виде вектора столбца или матрицы. Количество строк в выходном сигнале задается PL/M, где P - количество входных строк, L - коэффициент интерполяции, а M - коэффициент прореживания.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного номера: Да

Функции объекта

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

release(obj)

развернуть все

freqzЧастотная характеристика объекта системы дискретно-временного фильтра
fvtoolВизуализация частотной характеристики фильтров DSP
infoСведения об объекте filter System
costОценка затрат на внедрение фильтра Объект системы
coeffsВозвращает коэффициенты объекта System фильтра в структуре
polyphaseМногофазное разложение многоскоростного фильтра
generatehdlСоздание кода HDL для квантованного фильтра DSP (требуется кодер HDL конструкции фильтра)
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

В этом примере показано, как выполнить повторную выборку синусоидального сигнала 100 Гц с коэффициентом 3:2.

Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, myObject (x) становится шагом (myObject, x).

sine = dsp.SineWave(1, 100,'SampleRate', 5000,'SamplesPerFrame', 50);

Создайте фильтр преобразователя скорости FIR. По умолчанию коэффициент интерполяции равен 3, а коэффициент прореживания равен 2.

L = 3;
M = 2;
num = designMultirateFIR(L,M);
firrc = dsp.FIRRateConverter(L,M,num);
input = sine();
output = firrc(input);

Постройте график исходных и повторно отобранных сигналов.

ndelay = round(length(firrc.Numerator)/2/firrc.DecimationFactor);
indx = ndelay+1:length(output);
x = (0:length(indx)-1)/sine.SampleRate*firrc.DecimationFactor/firrc.InterpolationFactor;
stem((0:38)/sine.SampleRate, input(1:39)); hold on;
stem(x, output(indx),'r');
legend('Original','Resampled');

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

Примечание.При использовании R2016a или более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Примечание: audioDeviceWriter Системная object™ не поддерживается в MATLAB Online.

В этом примере показано, как выполнить повторную выборку и воспроизведение аудиосигнала с 48 кГц до 44 кГц на платформе Windows ®.

Создать dsp.FIRRateConverter объект с коэффициентом интерполяции L = 11 и коэффициентом прореживания M = 12 (ко-простое представление отношения 44k/48k), разумное приближение стандартной скорости 44,1 кГц. FIR - фильтр нижних частот, разработанный с использованием designMultirateFIR для указанного коэффициента преобразования.

L = 11;
M = 12;
num = designMultirateFIR(L,M);
firrc = dsp.FIRRateConverter(L,M,num);

Инициализируйте источник и приемник.

afr = dsp.AudioFileReader('audio48kHz.wav', ...
    'OutputDataType', 'single', ...
    'SamplesPerFrame', 4*M);
adw = audioDeviceWriter(44100);

Считывайте звук из файла, преобразуйте скорость сигнала и воспроизводите преобразованный звук.

while ~isDone(afr)
    audio1 = afr();
    audio2 = firrc(audio1);
    adw(audio2);
end
release(afr);
release(adw);

Алгоритмы

Преобразователь скорости КИХ эффективно реализован с использованием полифазной структуры.

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

H (z) = b0 + b1z 1 +... + bNz − N

N + 1 - длина фильтра FIR.

Это уравнение можно изменить следующим образом:

H (z) = (b0+bLz−L+b2Lz−2L +. +bN−L+1z− (N−L+1)) +z−1 (b1+bL+1z−L+b2L+1z−2L +. +bN−L+2z− (N−L+1)) + ⋮z− (L−1) (bL−1+b2L−1z−L+b3L−1z−2L +. +bNz− (N−L+1))

L - число многофазных компонентов, значение которого равно указанному коэффициенту интерполяции.

Это уравнение можно записать следующим образом:

H (z) = E0 (zL) + z 1E1 (zL) +... + z (L − 1) EL − 1 (zL)

E0 (zL), E1 (zL),..., EL-1 (zL) - полифазные компоненты КИХ-фильтра Н (z).

Концептуально преобразователь скорости КИХ содержит повышающую дискретизацию, за которой следует комбинированный антиизображающий, сглаживающий КИХ фильтр H (z), за которым следует понижающая дискретизация.

FIR rate converter contains an upsampler followed by a combined anti-imaging, anti-aliasing FIR filter, followed by a downsampler.

Замените H (z) многофазным представлением.

Вот многоскоростная благородная идентичность для интерполяции.

Применение благородной идентичности для интерполяции перемещает операцию повышения дискретизации в после операции фильтрации. Это перемещение позволяет фильтровать сигнал с меньшей скоростью.

Оператор повышающей дискретизации, блок задержки и сумматор можно заменить коммутатором. Для учета следующего понижающего дискретизации переключатель перемещается в шагах размера M. Коммутатор получает первую выборку из ветви 0 и движется в направлении против часовой стрелки, каждый раз пропуская M − 1 ветви.

В качестве примера рассмотрим преобразователь скорости с L, установленным в 5, и M, установленным в 3. Полифазными компонентами являются E0 (z), E1 (z), E2 (z), E3 (z) и E4 (z). Переключатель начинается на первой ветви 0, пропускает ветви 1 и 2, принимает следующую выборку из ветви 3, затем пропускает ветви 4 и 0, принимает следующую выборку из ветви 2 и так далее. Последовательность ветвей, из которых коммутатор получает выборку данных, равна [0, 3, 1, 4, 2, 0, 3, 1,....].

Преобразователь скорости осуществляет преобразование L/M, сначала применяя коэффициент интерполяции L к входящим данным, и используя коммутатор на конце для приема только 1 в M выборок, эффективно учитывая коэффициент dowsampling M. Следовательно, частота дискретизации на выходе преобразователя скорости FIR равна Lfs/M.

Расширенные возможности

.

Преобразование с фиксированной точкой
Проектирование и моделирование систем с фиксированной точкой с помощью Designer™ с фиксированной точкой.

Представлен в R2012a