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

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

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

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

Примечание: Если вы используете 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)

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