dsp.FIRHalfbandInterpolator

Описание

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

Чтобы повысить и интерполировать свои данные:

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

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

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

Создание

Описание

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

пример

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

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

Свойства

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

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

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

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

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

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

  • 'Filter order and stopband attenuation' - Порядок фильтра и затухание в полосе задерживания являются расчётными параметрами.

  • 'Filter order and transition width' - Порядок фильтра и ширина перехода являются расчётными параметрами.

Фильтр разработан с использованием оптимального метода создания фильтра равновесия.

Когда вы задаете 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

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

Зависимости

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

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

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

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

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

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

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

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

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

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

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

Описание

пример

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

пример

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

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

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

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

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

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

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

Типы данных: 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 halfband интерполяционный фильтр для данных повышающей дискретизации до 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);

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

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

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

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

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

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

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

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

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

Настройте считыватель аудио файла, банк фильтров анализа, аудио устройство средства записи и интерполяционный фильтр. Частота дискретизации аудио данных составляет 22050 Гц. Порядок полуполосного фильтра составляет 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)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

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

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

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

release(afr);           
release(adw);

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

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

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

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

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'});

Считывайте аудио 1024 выборки за раз. Фильтрация входов для получения 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] Harris, F.J. Multirate Signal Processing for Communication Systems, Prentice Hall, 2004, pp. 208-209.

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

.

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

Введенный в R2014b