dsp.FIRHalfbandInterpolator

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

Описание

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

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

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

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

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

Создание

Описание

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 Используя Системные объекты.

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

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

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

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

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

Описание

пример

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

пример

y = firhalfbandinterp(x1,x2) реализует набор фильтров синтеза полуполосы для входных параметров x1 и x2x1 выход 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');

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.

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

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.

Считайте речевой сигнал из звукового файла в системах координат 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).

Примечание: audioDeviceWriter Система object™ не поддерживается в 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