dsp.ComplexBandpassDecimator

Извлечение частотного поддиапазона с помощью одностороннего (комплексного) полосно-дециматора

Описание

The dsp.ComplexBandpassDecimator Система object™ извлекает определенный поддиапазон частот с помощью одностороннего, многоступенчатого, комплексного полосно-дециматора. Объект определяет интересующую полосу пропускания, используя заданную CenterFrequency, DecimationFactor и Bandwidth значения.

Чтобы извлечь частотный поддиапазон с помощью комплексного полосно-дециматора:

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

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

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

Создание

Описание

bpdecim = dsp.ComplexBandpassDecimator создает Системный объект, который фильтрует каждый канал входа с течением времени с помощью одностороннего, многоступенчатого, комплексного полосно-децимирующего фильтра. Объект определяет интересующую полосу пропускания, используя значения центральной частоты по умолчанию, коэффициента десятикратного уменьшения и полосы пропускания.

пример

bpdecim = dsp.ComplexBandpassDecimator(d) создает сложный объект полосно-пропускающего дециматора со DecimationFactor значение свойства установлено в d.

пример

bpdecim = dsp.ComplexBandpassDecimator(d,Fc) создает сложный объект полосно-пропускающего дециматора со DecimationFactor значение свойства установлено в d, и CenterFrequency значение свойства установлено в Fc.

пример

bpdecim = dsp.ComplexBandpassDecimator(d,Fc,Fs) создает сложный объект полосно-пропускающего дециматора со DecimationFactor значение свойства установлено в d, а CenterFrequency значение свойства установлено в Fc, и SampleRate значение свойства установлено в Fs.

Пример: dsp.ComplexBandpassDecimator(48e3/1e3,2e3,48e3);

bpdecim = dsp.ComplexBandpassDecimator(Name,Value) создает комплексный объект дециматора полосы пропускания с каждым заданным набором свойств до заданного значения. Заключайте каждое имя свойства в кавычки. Можно использовать этот синтаксис с любыми предыдущими комбинациями входных аргументов.

Пример: dsp.ComplexBandpassDecimator(48e3/1e3,2e3,48e3,'CenterFrequency',1e3);

Свойства

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

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

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

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

Центральная частота нужной полосы в Гц, заданная как вещественный, конечный числовой скаляр в области значений [- SampleRate/2, SampleRate/2].

Настраиваемый: Да

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

Создания фильтра, заданные как:

  • 'Decimation factor' -- Объект задает коэффициент десятикратного уменьшения через Decimation Factor свойство. Интересующая полоса пропускания (BW) вычисляется с помощью следующего уравнения:

    BW=Fs/D

    где

    • Fs -- Частота дискретизации, заданная через SampleRate свойство.

    • D -- Десятикратное уменьшение.

  • 'Bandwidth' -- Объект задает пропускную способность через Bandwidth свойство. Десятикратное уменьшение (D) вычисляется с помощью следующего уравнения:

    D=floor(FsBW+TW)

    где

    • Fs -- Частота дискретизации, заданная через SampleRate свойство.

    • BW -- Интересующая полоса пропускания.

    • TW -- Ширина перехода, заданная через TransitionWidth свойство.

  • 'Decimation factor and bandwidth' - Коэффициент десятикратного уменьшения и интересующая полоса пропускания определяются посредством DecimationFactor и Bandwidth свойства.

Коэффициент, которым можно уменьшить пропускную способность спектра входного сигнала, заданный как положительное целое число. Формат кадра (количество строк) входного сигнала должен быть кратным коэффициенту десятикратного уменьшения.

Зависимости

Это свойство применяется при установке Specification к любому из 'Decimation factor' или 'Decimation factor and bandwidth'.

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

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

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

Ширина перехода фильтра в Гц, заданная как положительная скалярная величина.

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

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

Зависимости

Это свойство применяется при установке Specification к любому из 'Bandwidth' или 'Decimation factor and bandwidth'.

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

Неравномерность в полосе пропускания фильтра в виде положительной скалярной величины в дБ.

Зависимости

Это свойство применяется при установке Specification к любому из 'Bandwidth' или 'Decimation factor and bandwidth'.

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

Флаг для минимизации количества комплексных коэффициентов фильтра, заданный как:

  • true - Первый этап многоступенчатого фильтра является полосно-пропускающим (комплексные коэффициенты) с центром на заданной центральной частоте. За первой стадией следует стадия смешения, которая гетеродинирует сигнал к DC. Оставшиеся стадии фильтра, все с реальными коэффициентами, следуют.

  • false - Входной сигнал сначала передается через различные каскады многоступенчатого фильтра. Все каскады являются полосно-пропускающими (комплексные коэффициенты). Затем сигнал гетеродинизируется на DC, если MixToBaseband является true, и смещение частоты, получаемое в результате десятикратного уменьшения, ненулевое.

Флаг для смешения сигнала с основной полосой частот, указанный как:

  • true - Объект гетеродинет отфильтрованный, децимированный сигнал в DC. Этот этап смешения запускается с выходной частотой выборки фильтра.

  • false - Объект пропускает стадию смешения.

Зависимости

Это свойство применяется при установке MinimizeComplexCoefficients на false.

Частота дискретизации входного сигнала в Гц, заданная как действительная положительная скалярная величина.

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

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

Синтаксис

Описание

y = bpdecim(x) фильтрует действительный или комплексный входной сигнал, x, для получения выхода, y. Выходы содержат поддиапазон частот, заданный свойствами системного объекта. Системный объект фильтрует каждый канал входного сигнала независимо с течением времени. The формата кадра (первая размерность) x должен быть кратным коэффициенту десятикратного уменьшения.

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

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

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

Типы данных: single | double
Поддержка комплексного числа: Да

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

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

Выход комплексного полосно-пропускающего дециматора, возвращенный как вектор или матрица. Выходы содержат поддиапазон частот, заданный свойствами системного объекта. Количество строк ( форматов кадра) в выход сигнале в 1/ D раза превышает количество строк в входном сигнале, где D является десятикратным уменьшением фактором. Количество каналов (столбцов) не меняется.

Тип данных выхода совпадает с типом данных входа. Выходной сигнал всегда сложен.

Типы данных: single | double
Поддержка комплексного числа: Да

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

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

release(obj)

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

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

Примеры

свернуть все

Вычислите стоимость реализации комплексного полосно-пропускного дециматора с помощью cost функция.

Создайте dsp.ComplexBandpassDecimator объект. Установите DecimationFactor для 12, CenterFrequency до 5000 Гц и SampleRate до 44 100 Гц.

cbp = dsp.ComplexBandpassDecimator(12,5000,44100)
cbp = 
  dsp.ComplexBandpassDecimator with properties:

                CenterFrequency: 5000
                  Specification: 'Decimation factor'
               DecimationFactor: 12
            StopbandAttenuation: 80
                TransitionWidth: 100
    MinimizeComplexCoefficients: true
                     SampleRate: 44100

Вычислите стоимость реализации cbp использование cost функция.

c = cost(cbp)
c = struct with fields:
                      NumCoefficients: 201
                            NumStates: 379
    RealMultiplicationsPerInputSample: 44.3333
          RealAdditionsPerInputSample: 43.8333

Вычислите комплексную частотную характеристику комплексного полосно-пропускающего дециматора с помощью freqz функция.

Создайте dsp.ComplexBandpassDecimator объект. Установите DecimationFactor для 12, CenterFrequency до 5000 Гц и SampleRate до 44100 Гц. Вычислите и отобразите частотную характеристику.

cbp = dsp.ComplexBandpassDecimator(12,5000,44100);
[h,f] = freqz(cbp);
plot(f,20*log10(abs(h)))
grid on
xlabel('Frequency (Hz)')
ylabel('h (dB)')

Figure contains an axes. The axes contains an object of type line.

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

Инициализация

Создайте dsp.ComplexBandpassDecimator Системная object™ с центральной частотой, установленной на 2000 Гц, интересующей полосой, установленной на 1000 Гц, и частотой дискретизации, установленной на 48 кГц. Коэффициент десятикратного уменьшения вычисляется как отношение частоты дискретизации к интересующей полосе пропускания. Входом к дециматору является синусоида с длиной системой координат 1200 выборкой с тонами на 1625 Гц, 2000 Гц и 2125 Гц. Создайте dsp.SpectrumAnalyzer возможности для визуализации спектра сигнала.

Fs = 48e3;
CF = 2000;
BW = 1000;
D  =  Fs/BW;
FrameLength = 1200;
bpdecim = dsp.ComplexBandpassDecimator(D,CF,Fs);

sa = dsp.SpectrumAnalyzer('SampleRate',Fs/D,...
    'YLimits',[-120 40],...
    'FrequencyOffset',CF);

tones = [1625 2000 2125];
sin = dsp.SineWave('SampleRate',Fs,'Frequency',tones,...
    'SamplesPerFrame',FrameLength);

Визуализация фильтрующих каскадов

Использование visualizeFilterStages функция, можно визуализировать ответ каждой отдельной стадии фильтра с помощью FVTool.

visualizeFilterStages(bpdecim)

Отобразите info фильтра

The info функция отображает информацию о полосно-пропускающем дециматоре.

fprintf('%s',info(bpdecim))
Overall Decimation Factor       : 48
Bandwidth                       : 1000 Hz
Number of Filters               : 5
Real multiplications per Input Sample: 14.708333
Real additions per Input Sample      : 13.833333
Number of Coefficients               : 89
Filters:                         
   Filter 1:
   dsp.FIRDecimator     - Decimation Factor   : 2 
   Filter 2:
   dsp.FIRDecimator     - Decimation Factor   : 2 
   Filter 3:
   dsp.FIRDecimator     - Decimation Factor   : 2 
   Filter 4:
   dsp.FIRDecimator     - Decimation Factor   : 3 
   Filter 5:
   dsp.FIRDecimator     - Decimation Factor   : 2 

Входной поток и сигнал фильтрации

Создайте цикл for-для выполнения 1000 итераций. В каждой итерации поток в 1200 выборках (одна система координат) шумной синусоиды и прикладывает комплексный полосно-пропускающий дециматор к каждой системе координат входного сигнала. Визуализируйте входной и выходной спектр в анализаторе спектра, sa.

for index = 1:1000
    x = sum(sin(),2) +  1e-4*randn(FrameLength,1);
    z = bpdecim(x);
    sa(z);
end

Полосовой дециматор с центральной частотой 2000 Гц и шириной полосы 1000 Гц проходит три синусоиды тональных сигнала 1625 Гц, 2000 Гц и 2125 Гц.

Измените центральную частоту дециматора на 2400 Гц и фильтруйте сигнал.

release(bpdecim);
bpdecim.CenterFrequency = 2400
bpdecim = 

  dsp.ComplexBandpassDecimator with properties:

                CenterFrequency: 2400
                  Specification: 'Decimation factor'
               DecimationFactor: 48
            StopbandAttenuation: 80
                TransitionWidth: 100
    MinimizeComplexCoefficients: true
                     SampleRate: 48000

Сконфигурируйте анализатор спектра, чтобы показать интересующую пропускную способность, [-1900, 2900] Гц.

release(sa)
sa.FrequencyOffset = 2400;

Поток в данных и фильтрация сигнала.

for index = 1:1000
    x = sum(sin(),2) +  1e-4 * randn(FrameLength,1);
    z = bpdecim(x);
    sa(z);
end

Тоны с частотой 2000 Гц и 2125 Гц передаются через дециматор, в то время как тон с частотой 1625 Гц отфильтровывается.

Алгоритмы

Комплексный полосно-пропускающий дециматор разработан путем применения комплексного преобразования сдвига частоты к lowpass прототипа. Прототип lowpass в этом случае является многоразовым, многоступенчатым фильтром с конечной импульсной характеристикой (КИХ). Желаемый сдвиг частоты применяется только к первому этапу. Последующие этапы масштабируют требуемый сдвиг частоты на их соответствующие совокупные коэффициенты десятикратного уменьшения. Для получения дополнительной информации смотрите Complex Bandpass Создания фильтра и Zoom FFT.

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

.
Введенный в R2018a