dsp. FIRHalfbandInterpolator

Интерполятор полуполосы

Описание

Система dsp.FIRHalfbandInterpolator object™ выполняет эффективную многофазную интерполяцию входного сигнала с помощью фактора повышающей дискретизации два. Можно использовать dsp.FIRHalfbandInterpolator, чтобы реализовать фрагмент синтеза банка 2D ленточного фильтра, чтобы синтезировать сигнал от lowpass и highpass поддиапазонов. dsp.FIRHalfbandInterpolator использует КИХ equiripple проект, чтобы создать фильтры полуполосы и многофазную реализацию, чтобы отфильтровать вход.

Сверхдискретизировать и интерполировать ваши данные:

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

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

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

Создание

Синтаксис

firhalfbandinterp = dsp.FIRHalfbandInterpolator
firhalfbandinterp = dsp.FIRHalfbandInterpolator(Name,Value)

Описание

firhalfbandinterp = dsp.FIRHalfbandInterpolator возвращает фильтр интерполяции полуполосы FIR, firhalfbandinterp, с настройками по умолчанию. При настройках по умолчанию Системный объект сверхдискретизировал и интерполирует входные данные с помощью частоты полуполосы Гц 11025, ширины перехода 4.1 kHz и затухания полосы задерживания дБ 80.

пример

firhalfbandinterp = dsp.FIRHalfbandInterpolator(Name,Value) возвращает интерполятор полуполосы, с дополнительными свойствами, заданными одним или несколькими аргументами пары Name,Value.

Пример: firhalfbandinterp = dsp.FIRHalfbandInterpolator('Specification','Filter order and stopband attenuation') создает объект интерполятора полуполосы FIR с набором порядка фильтра к 52 и набором затухания полосы задерживания к 80 дБ.

Свойства

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

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

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

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

Отфильтруйте параметры проекта, заданные как вектор символов. Когда вы устанавливаете Specification на одно из следующих, вы выбираете два из трех доступных параметров проекта, чтобы разработать КИХ-Полуленточный фильтр.

  • 'Transition width and stopband attenuation' – Ширина перехода и затухание полосы задерживания являются параметрами проекта.

  • 'Filter order and stopband attenuation' – Отфильтруйте порядок, и затухание полосы задерживания параметры проекта.

  • 'Filter order and transition width' – Отфильтруйте порядок, и ширина перехода параметры проекта.

Фильтр разработан с помощью оптимального метода разработки фильтра equiripple.

Когда вы устанавливаете Specification на 'Coefficients', вы задаете коэффициенты полуленточного фильтра непосредственно через свойство Numerator.

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

Зависимости

Это свойство применяется, когда вы устанавливаете Specification или на 'Filter order and stopband attenuation' или на 'Filter order and transition width'.

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

Затухание полосы задерживания в дБ, заданном как положительный действительный скаляр.

Зависимости

Это свойство применяется, когда вы устанавливаете Specification или на 'Filter order and stopband attenuation' или на 'Transition width and stopband attenuation'.

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

Ширина перехода в Гц, заданном как положительный действительный скаляр. Значение ширины перехода в Гц должно быть меньше, чем 1/2 входная частота дискретизации.

Зависимости

Это свойство применяется, когда вы устанавливаете Specification или на 'Transition width and stopband attenuation' или на 'Filter order and transition width'.

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

КИХ-коэффициенты полуленточного фильтра, заданные как вектор - строка. Коэффициенты должны выполнить импульсный формат ответа полуполосы FIR. Для получения дополнительной информации на этом формате, смотрите Полуленточные фильтры и КИХ-Проект Полуленточного фильтра. Если половина порядка фильтра, (length(Numerator) - 1)/2 является ровным, любым коэффициентом, начинающим с первого коэффициента, должен быть нуль за исключением центрального коэффициента, который должен быть 1.0. Если половина порядка фильтра нечетна, последовательность переменных нулей с 1.0 в центре запускается во втором коэффициенте.

Зависимости

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

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

Введите частоту дискретизации в Гц, заданном как положительный действительный скаляр. Входные значения по умолчанию частоты дискретизации к 44 100 Гц. Если вы задаете ширину перехода как один из ваших параметров проекта фильтра, ширина перехода не может превысить 1/2 входная частота дискретизации.

Типы данных: single | double

Набор фильтров синтеза, заданный или как false или как true. Если этим свойством является false, dsp.FIRHalfbandInterpolator является фильтром интерполяции для одного вектора - или вход с матричным знаком, когда вы вызываете алгоритм. Если этим свойством является true, dsp.FIRHalfbandInterpolator является набором фильтров синтеза, и алгоритм принимает, что два входных параметров, lowpass и highpass поддиапазоны синтезируют.

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

Word и дробные длины коэффициентов, заданных как объект numerictype без знака или со знаком. Значение по умолчанию, numerictype(1,16) соответствует числовому текстовому объекту со знаком с 16-битными коэффициентами и дробной длиной, определенной на основе содействующих значений, чтобы дать самую лучшую точность.

Это свойство не является настраиваемым.

Размер слова вывода - то же самое как размер слова входа. Дробная продолжительность вывода вычисляется таким образом, что целый динамический диапазон вывода может быть представлен без переполнения. Для получения дополнительной информации о том, как дробная продолжительность вывода вычисляется, см. Правила Точности Фиксированной точки для Предотвращения Переполнения в КИХ-Фильтрах.

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

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

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

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

y = firhalfbandinterp(x1)
y = firhalfbandinterp(x1,x2)

Описание

пример

y = firhalfbandinterp(x1) сверхдискретизировал два и интерполирует входной сигнал x1 с помощью интерполятора полуполосы FIR, firhalfbandinterp.

пример

y = firhalfbandinterp(x1,x2) реализует набор фильтров синтеза полуполосы для входных параметров x1 и x2. x1 является lowpass вывод аналитического набора фильтров полуполосы, и x2 является highpass вывод аналитического набора фильтров полуполосы. dsp.FIRHalfbandInterpolator реализует набор фильтров синтеза только, когда свойство 'FilterBankInputPort' установлено в true.

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

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

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

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

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

Размер, тип данных и сложность обоих входные параметры должны быть тем же самым.

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

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

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

Вывод интерполятора, возвращенного как вектор-столбец или матрица. Количество строк в интерполяторе вывод является дважды количеством строк во входном сигнале.

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

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

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

release(obj)

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

freqzЧастотная характеристика фильтра
fvtoolВизуализируйте частотную характеристику фильтров DSP
infoИнформация о Системном объекте фильтра
costОценка стоится за реализацию Системных объектов фильтра
coeffsОтфильтруйте коэффициенты
polyphaseМногофазное разложение многоскоростного фильтра
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

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

Создайте lowpass фильтр интерполяции полуполосы для повышающей дискретизации данных к 44,1 кГц. Задайте порядок фильтра 52 и ширину перехода 4,1 кГц.

Fs = 44.1e3;
InputSampleRate = Fs/2;
Order = 52;
TW = 4.1e3;
filterspec = 'Filter order and transition width';

firhalfbandinterp = dsp.FIRHalfbandInterpolator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',InputSampleRate);

Постройте импульсный ответ. Коэффициент порядка 0th задерживается 26 выборок, который равен групповой задержке фильтра. Это приводит к причинному полуленточному фильтру.

fvtool(firhalfbandinterp,'Analysis','Impulse');

Постройте значение и фазовый отклик.

fvtool(firhalfbandinterp,'Analysis','freq');

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

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

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

Настройте читателя звукового файла, аналитический набор фильтров, средство записи аудио устройства и фильтр интерполяции. Уровень выборки аудиоданных составляет 22 050 Гц. Порядок полуленточного фильтра равняется 52 с шириной перехода 2 кГц.

afr = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024);

filterspec = 'Filter order and transition width';
Order = 52;
TW = 2000;

firhalfbanddecim = dsp.FIRHalfbandDecimator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',afr.SampleRate);

firhalfbandinterp = dsp.FIRHalfbandInterpolator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',afr.SampleRate/2);

adw = audioDeviceWriter('SampleRate',afr.SampleRate);

Просмотрите ответ значения полуленточного фильтра.

fvtool(firhalfbanddecim)

Считайте речевой сигнал из звукового файла в кадрах 1 024 выборок. Отфильтруйте речевой сигнал в lowpass и highpass поддиапазоны с частотой полуполосы 5 512,5 Гц. Восстановите lowpass приближение речевого сигнала путем интерполяции lowpass поддиапазона. Проигрывайте отфильтрованный вывод.

while ~isDone(afr)
  audioframe = afr();
  xlo = firhalfbanddecim(audioframe);
  ylow = firhalfbandinterp(xlo);
  adw(ylow);
end

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

release(afr);           
release(adw);

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

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

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

Настройте средство записи средства чтения и устройства звукового файла. Создайте полуполосу FIR decimator и интерполятор. Наконец, настройте спектр анализатор, чтобы отобразить спектры мощности ввода и вывода набора фильтров.

AF = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024);
AP = audioDeviceWriter('SampleRate',AF.SampleRate);

filterspec = 'Filter order and transition width';
Order = 52;
TW = 2000;

firhalfbanddecim = dsp.FIRHalfbandDecimator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',AF.SampleRate);

firhalfbandinterp = dsp.FIRHalfbandInterpolator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',AF.SampleRate/2,...
    'FilterBankInputPort',true);

SpecAna = dsp.SpectrumAnalyzer('SampleRate',AF.SampleRate,...
    'PlotAsTwoSidedSpectrum',false,'ReducePlotRate',false,...
    'ShowLegend',true,...
    'ChannelNames',{'Input signal','Filtered output signal'});

Считайте аудио 1 024 выборки за один раз. Отфильтруйте вход, чтобы получить lowpass и highpass сигналы поддиапазона, подкошенные фактором два. Это - аналитический набор фильтров. Используйте интерполятор полуполосы в качестве набора фильтров синтеза. Отобразите рабочий спектр мощности аудиовхода и вывод набора фильтров синтеза. Проигрывайте вывод.

while ~isDone(AF)
    audioInput = AF();
    [xlo,xhigh] = firhalfbanddecim(audioInput);
    audioOutput = firhalfbandinterp(xlo,xhigh);
    spectrumInput = [audioInput audioOutput];
    SpecAna(spectrumInput);
    AP(audioOutput);
end

release(AF);
release(AP);
release(SpecAna);

Создайте фильтр интерполяции полуполосы для данных, выбранных на уровне 44,1 кГц. Порядок фильтра 52 с шириной перехода 4,1 кГц. Используйте фильтр, чтобы сверхдискретизировать и интерполировать многоканальный вход.

Fs = 44.1e3; 
filterspec = 'Filter order and transition width';
Order = 52;
TW = 4.1e3;  
firhalfbandinterp = dsp.FIRHalfbandInterpolator(...
                                               'Specification',filterspec,...
                                               'FilterOrder',Order,...
                                               'TransitionWidth',TW,...
                                                'SampleRate',Fs);

x = randn(1024,4);
y = step(firhalfbandinterp,x);

Больше о

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

Алгоритмы

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

Ссылки

[1] Харрис, Обработка сигналов Ф.Дж. Малтирэйта для Систем связи, Prentice Hall, 2004, стр 208–209.

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

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

Введенный в R2014b