dsp.FarrowRateConverter

Полиномиальный конвертер частоты дискретизации с произвольным коэффициентом преобразования

Описание

dsp.FarrowRateConverter Система object™ реализует фильтр преобразования частоты дискретизации аппроксимации полиномом с помощью структуры Фэрроу. Можно использовать этот объект преобразовать частоту дискретизации сигнала или вниз случайным фактором. Эта фиксированная точка поддержки объектов операции.

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

  1. Создайте dsp.FarrowRateConverter объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Описание

frc = dsp.FarrowRateConverter создает полиномиальный основанный на фильтре Системный объект конвертера частоты дискретизации, frc. Для каждого канала входного сигнала, frc преобразует входную частоту дискретизации в выходную частоту дискретизации.

пример

frc = dsp.FarrowRateConverter(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.

Пример: frc = dsp.FarrowRateConverter('Specification','Coefficients','Coefficients',[1 2; 3 4]) возвращает фильтр, который преобразует от 44,1 кГц до 48 кГц с помощью пользовательских коэффициентов, которые реализуют фильтр полинома 2-го порядка.

frc = dsp.FarrowRateConverter(fsIn,fsOut,tol,np) возвращает Системный объект конвертера частоты дискретизации, frc, с набором свойств InputSampleRate к fsIn, Набор свойств OutputSampleRate к fsOut, Набор свойств OutputRateTolerance к tol, и набор свойств PolynomialOrder к np.

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Свойства фильтра

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

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

Частота дискретизации выходного сигнала, заданного как положительная скалярная величина в Гц. Выходная частота дискретизации может представлять сверхдискретизировать или проредить входного сигнала.

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

Максимальный допуск к выходной частоте дискретизации, заданной как положительная скалярная величина от 0 до 0.5, включительно.

Фактическая выходная частота дискретизации варьируется, но в заданной области. Например, если OutputRateTolerance задан как 0.01, затем фактическая выходная частота дискретизации находится в области значений OutputSampleRate ± 1%. Эта гибкость часто включает более простое создание фильтра.

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

Метод для определения коэффициентов фильтра для фильтра интерполятора, заданного как одно из следующего:

  • 'Polynomial order' — Используйте PolynomialOrder свойство задать порядок полинома лагранжевого фильтра интерполяции. Объект вычисляет коэффициенты, которые соответствуют свойства допуска и уровень.

  • 'Coefficients' — Используйте Coefficients свойство задать полиномиальные коэффициенты непосредственно.

Порядок полинома лагранжевого фильтра интерполяции, заданного как положительное целое число, меньше чем или равное 4. Объект вычисляет коэффициенты, которые соответствуют свойства допуска и уровень.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к 'Polynomial order'.

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

Отфильтруйте полиномиальные коэффициенты, заданные как M с действительным знаком-by-M матрица, где M является полиномиальным порядком.

Схема показывает график потока сигналов для dsp.FarrowRateConverter объект с содействующим набором к [1 2; 3 4].

Каждая ветвь КИХ-фильтра соответствует строке матрицы коэффициентов.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к 'Coefficients'.

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

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

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

Действие переполнения для операций фиксированной точки, заданных как любой 'Wrap' или 'Saturate'. Для получения дополнительной информации о действиях переполнения смотрите, что Переполнение Обрабатывает.

Тип данных коэффициентов фильтра, заданных как numerictype со знаком объект. Типом данных по умолчанию является 16-битный numerictype со знаком объект. Необходимо задать numerictype объект без определенного масштабирования двоичной точки. Чтобы максимизировать точность, объект определяет дробную длину этого типа данных на основе содействующих значений.

Тип данных дробной задержки, заданной как numerictype без знака объект. Типом данных по умолчанию является 8-битный numerictype без знака объект. Необходимо задать numerictype объект без определенного масштабирования двоичной точки. Чтобы максимизировать точность, объект определяет дробную длину этого типа данных на основе дробных значений задержки.

Тип данных множимого, заданного как numerictype со знаком объект. Типом данных по умолчанию является 16-битный numerictype со знаком объект с 13-битной дробной длиной. Необходимо задать numerictype объект, который имеет определенное масштабирование двоичной точки.

Тип данных выхода, заданного как одно из следующего:

  • 'Same word length as input' — Выведите размер слова, и дробная длина совпадают с входом.

  • 'Same as accumulator' — Выведите размер слова, и дробная длина совпадают с аккумулятором.

  • numerictype объект — тип выходных данных фиксированной точки Со знаком. Если вы не задаете дробную длину, объект вычисляет дробную длину на основе входного диапазона. Объект сохраняет динамический диапазон входа.

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

Синтаксис

Описание

пример

y = frc(x) передискретизирует вход x создать выход y согласно преобразованию уровня, заданному frc.

Входные параметры

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

Входной сигнал, заданный как вектор или матрица. Длина строки x должен быть кратным полному фактору децимации. Каждый столбец x обработан как отдельный канал.

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

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

Передискретизируемый сигнал, возвращенный как вектор или матрица.

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

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

release(obj)

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

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

Примеры

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

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

Примечание: dsp.AudioFileReader и dsp.AudioFileWriter Системные объекты не поддержаны в MATLAB Online.

Создайте dsp.FarrowRateConverter Система object™, чтобы преобразовать звуковой сигнал от 44,1 кГц до 96 кГц. Установите полиномиальный порядок для фильтра.

fs1 = 44.1e3;
fs2 = 96e3;
LagrangeOrder = 2; % 1 = linear interpolation
frc = dsp.FarrowRateConverter('InputSampleRate',fs1,...
                              'OutputSampleRate',fs2,...
                              'PolynomialOrder',LagrangeOrder);
ar = dsp.AudioFileReader('guitar10min.ogg','SamplesPerFrame',14700);
aw = dsp.AudioFileWriter('guitar10min_96kHz.wav','SampleRate',fs2);

Проверяйте получившиеся факторы интерполяции и децимации.

[interp,decim] = getRateChangeFactors(frc)
interp = 320
decim = 147

Отобразите полином что объектное использование, чтобы соответствовать входным выборкам.

coeffs = getPolynomialCoefficients(frc)
coeffs = 3×3

    0.5000   -0.5000         0
   -1.0000         0    1.0000
    0.5000    0.5000         0

Преобразуйте 100 систем координат звукового сигнала. Запишите результат в файл.

for n = 1:1:100
   x = ar();  
   y = frc(x);
   aw(y);
end

Выпустите AudioFileWriter Система object™, чтобы завершить создание выходного файла.

release(aw)
release(ar)

Постройте сигналы ввода и вывода 100-й системы координат данных. Задержите вход, чтобы компенсировать задержку фильтра.

t1 = 0:1/fs1:1/30-1/fs1;
t2 = 0:1/fs2:1/30-1/fs2;

delay = ceil((LagrangeOrder+1)/2)/fs1;
el1 = 1:length(t1)-delay;
el2 = 1:length(t2);
el2(1:delay) = [];

figure

subplot(2,1,1)
plot(t1(1:length(el1)),x(el1,1))
hold on
plot(t1(1:length(el1)),x(el1,2))
xlabel('Time (s)')
title('Input Channels')

subplot(2,1,2)
plot(t2(1:length(el2)),y(el2,1))
hold on
plot(t2(1:length(el2)),y(el2,2))
xlabel('Time (s)')
title('Output Channels')

Увеличьте масштаб, чтобы видеть различие в частотах дискретизации.

figure

subplot(2,1,1)
plot(t1(1:length(el1)),x(el1,1),'o-')
hold on
plot(t2(1:length(el2)),y(el2,1),'d--')
xlim([0.0104 0.0107])
title('First Channel')
xlabel('Time (s)')
legend('Input','Output')

subplot(2,1,2)
plot(t1(1:length(el1)),x(el1,2),'o-')
hold on
plot(t2(1:length(el2)),y(el2,2),'d--')
xlim([0.0104 0.0107])
xlabel('Time (s)')
title('Second Channel')
legend('Input','Output')

Создайте dsp.FarrowRateConverter Система object™ с 0%-м допуском. Норма выработки равна OutputSampleRate property. Входной размер должен быть кратным фактору децимации, M. В этом случае M 320.

frc = dsp.FarrowRateConverter('InputSampleRate',96e3,'OutputSampleRate',44.1e3);
FsOut = getActualOutputRate(frc) 
FsOut = 44100
[L,M] = getRateChangeFactors(frc) 
L = 147
M = 320

Позвольте 1%-й допуск на норме выработки и наблюдайте различие в факторе децимации.

frc.OutputRateTolerance = 0.01; 
FsOut2 = getActualOutputRate(frc) 
FsOut2 = 4.4308e+04
[L2,M2] = getRateChangeFactors(frc) 
L2 = 6
M2 = 13

Фактор децимации - теперь только 13. Чем ниже фактор децимации, тем больше гибкости во входном размере. Нормой выработки является в области значений OutputSampleRate ± 1%.

Создайте dsp.FarrowRateConverter Система object™ со свойствами по умолчанию. Вычислите и отобразите частотную характеристику.

frc = dsp.FarrowRateConverter;
[h,f] = freqz(frc);
plot(f,20*log10(abs(h)))
ylabel('Filter Response')
xlabel('Frequency (rad/s)')

Создайте dsp. Система FarrowRateConverter object™ со значениями по умолчанию. Определите его вычислительную стоимость: количество коэффициентов, количество состояний, умножения на входную выборку и сложений на входную выборку.

frc = dsp.FarrowRateConverter;
cst = cost(frc)
cst = struct with fields:
                  NumCoefficients: 16
                        NumStates: 3
    MultiplicationsPerInputSample: 13.0612
          AdditionsPerInputSample: 11.9728

Повторите расчет, допуская 10%-й допуск в выходной частоте дискретизации.

frc.OutputRateTolerance = 0.1;
ctl = cost(frc)
ctl = struct with fields:
                  NumCoefficients: 16
                        NumStates: 3
    MultiplicationsPerInputSample: 12
          AdditionsPerInputSample: 11

Алгоритмы

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

Неоплодотворенные фильтры реализуют интерполяцию кусочного полинома, использующую правило Горнера, чтобы вычислить выборки из полинома. Полиномиальные коэффициенты, используемые, чтобы соответствовать входным выборкам, соответствуют Лагранжевым коэффициентам интерполяции.

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

Можно использовать полином любого порядка соответствовать к существующим выборкам. Однако, поскольку полиномы крупного заказа часто колеблются, полиномы порядка 1, 2, 3, или 4 используются на практике.

Блок вычисляет интерполированные значения в желаемых местоположениях путем варьирования только дробной задержки, µ. Это значение является интервалом между предыдущей входной выборкой и выборкой текущей производительности. Все коэффициенты фильтра остаются постоянными.

  • Входные выборки отфильтрованы с помощью M + фильтры на 1 феркин, где M является полиномиальным порядком.

  • Выходные параметры этих фильтров умножаются на дробную задержку, µ.

  • Выход является суммой результатов умножения.

Схема показывает типы данных что dsp.FarrowRateConverter возразите использованию для сигналов фиксированной точки и сигналов с плавающей точкой. Можно задать эти типы данных с помощью свойств объекта, видеть Fixed-Point Properties. Если вход является плавающей точкой, все типы данных в фильтре совпадают с типом входных данных, single или double.

Если вход является фиксированной точкой, КИХ-фильтр задает внутренние типы данных с помощью RoundingMode, OverflowMode, и CoefficientsDataType свойства. Аккумуляторы и продукты в КИХ-фильтре используют типы данных полной точности. Объект бросает выход КИХ-фильтра к MultiplicandDataType.

Ссылки

[1] Hentschel, T. и Г. Феттвейс. "Цифровые фильтры непрерывного времени для Преобразования Частоты дискретизации в Реконфигурируемых Радио-Терминалах". Frequenz. Издание 55, Номер 5-6, 2001, стр 185–188.

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

Введенный в R2014b

Для просмотра документации необходимо авторизоваться на сайте