dsp.FIRRateConverter

Конвертер частоты дискретизации

Описание

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

upsampler увеличивает частоту дискретизации сигнала факторным L, и downsampler уменьшает частоту дискретизации сигнала факторным 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 функция. Для примера смотрите, Передискретизируют Сигнал с помощью КИХ-Конвертера Уровня. Все начальные состояния фильтра являются нулем.

Типы данных: 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 |.

Задайте содействующую фиксированную точку фильтра как a 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).

Примечание: 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).

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

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

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

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

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

Можно заменить оператор повышающей дискретизации, блок задержки и сумматор с переключателем коммутатора. С учетом downsampler, который следует, перемещения переключателя с шагом размера 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. Следовательно, частотой дискретизации при выходе КИХ-конвертера уровня является Lfs/M.

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

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

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