dsp.FIRRateConverter

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

Описание

The dsp.FIRRateConverter Система object™ выполняет преобразование частоты дискретизации рациональным фактором на векторном или матричном входе. Конечная импульсная характеристика преобразователь скорости каскадирует интерполятор с дециматором. Преобразователь скорости (как показано на схеме) концептуально состоит из усилителя, за которым следует комбинированный фильтр анти-визуализации и сглаживания конечной импульсной характеристики, за которым следует понижающий усилитель. Чтобы спроектировать конечную импульсную характеристику фильтр, который действует как комбинированный фильтр анти-визуализации и сглаживания конечной импульсной характеристики, используйте designMultirateFIR функция. Для получения примера смотрите Resample a Signal конечной импульсной характеристики используя Rate Converter.

Усилитель увеличивает скорость дискретизации сигнала на множитель 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 возвращает конечную импульсную характеристику преобразователь частоты выборки, firrc, который повторяет входной сигнал со скоростью, в 3/2 раза превышающей исходную частоту дискретизации.

пример

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

firrc = dsp.FIRRateConverter(___,Name,Value) возвращает конечную импульсную характеристику преобразователь частоты выборки с дополнительными свойствами, заданными одним или несколькими 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)zn

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

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

Типы данных: 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 (Fixed-Point Designer) объект с Signedness от Auto.

Зависимости

Это свойство применяется только когда CoefficientsDataType свойство Custom.

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

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

Зависимости

Это свойство применяется только когда ProductDataType свойство Custom.

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

Задайте тип фиксированной точки аккумулятора как масштабированный numerictype (Fixed-Point Designer) объект с Signedness от Auto.

Зависимости

Это свойство применяется только когда AccumulatorDataType свойство Custom.

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

Задайте тип данных с фиксированной точкой на выходе как масштабированный numerictype (Fixed-Point Designer) объект с 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
Поддержка комплексного числа: Да

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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

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

Создайте фильтр конечной импульсной характеристики скорости. Коэффициент интерполяции по умолчанию является 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).

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

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

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

Алгоритмы

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

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

H(z)=b0+b1z1+...+bNzN

N + 1 - длина конечной импульсной характеристики фильтра.

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

H(z)=(b0+bLzL+b2Lz2L+..+bNL+1z(NL+1))+z1(b1+bL+1zL+b2L+1z2L+..+bNL+2z(NL+1))+z(L1)(bL1+b2L1zL+b3L1z2L+..+bNz(NL+1))

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

Можно записать это уравнение как:

H(z)=E0(zL)+z1E1(zL)+...+z(L1)EL1(zL)

E0 (zL), E1 (zL),..., EL-1 (zL) являются полифазными компонентами конечной импульсной характеристики H (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 выборок, эффективно учитывая M коэффициента понижающей дискретизации. Следовательно, скорость дискретизации на выходе преобразователя скорости конечной импульсной характеристики является Lfs/M.

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

.

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

Введенный в R2012a