exponenta event banner

dsp. FIRHalfbandInterpolator

Полупериодный интерполятор

Описание

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

Чтобы увеличить выборку и интерполяцию данных, выполните следующие действия.

  1. Создать dsp.FIRHalfbandInterpolator и задайте его свойства.

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

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

Создание

Описание

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

пример

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

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

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Параметры конструкции фильтра, заданные как символьный вектор. При установке Specification В одном из следующих вариантов можно выбрать два из трех доступных параметров конструкции для проектирования фильтра FIR Halfband.

  • '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

Коэффициенты полуполосного фильтра FIR, заданные как вектор строки. Коэффициенты должны соответствовать формату импульсной характеристики полуполосы FIR. Дополнительные сведения об этом формате см. в разделах Halfband Filters и FIR 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 является банком фильтров синтеза, и алгоритм принимает два входных сигнала, низкочастотный и высокочастотный поддиапазоны для синтеза.

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

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

Это свойство невозможно настроить.

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

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

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

Описание

пример

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

пример

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

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

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

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

Типы данных: 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
Поддержка комплексного номера: Да

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

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

release(obj)

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

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

Примеры

свернуть все

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

Примечание: 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 выборок. Фильтрация речевого сигнала на низкочастотные и высокочастотные поддиапазоны с частотой полуполосы 5512,5 Гц. Восстановление аппроксимации нижних частот речевого сигнала путем интерполяции поддиапазона нижних частот. Воспроизвести отфильтрованные выходные данные.

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

Дождитесь завершения воспроизведения аудиофайла, затем закройте входной файл и освободите аудиоресурс.

release(afr);           
release(adw);

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

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

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

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

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. Фильтрация входного сигнала для получения низкочастотных и высокочастотных поддиапазонов, прореженных в два раза. Это банк фильтров анализа. В качестве набора фильтров синтеза используйте полупозиционный интерполятор. Отображение спектра рабочей мощности входного аудиосигнала и выходного сигнала блока фильтров синтеза. Воспроизведение выходных данных.

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] Харрис, F.J. Multirate Signal Processing for Communication Systems, Prentice Hall, 2004, pp. 208-209.

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

.

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

Представлен в R2014b