dsp. ComplexBandpassDecimator

Извлеките поддиапазон частоты с помощью односторонней (комплексной) полосы пропускания decimator

Описание

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

Извлекать поддиапазон частоты с помощью комплексной полосы пропускания decimator:

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

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

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

Создание

Синтаксис

bpdecim = dsp.ComplexBandpassDecimator
bpdecim = dsp.ComplexBandpassDecimator(d)
bpdecim = dsp.ComplexBandpassDecimator(d,Fc)
bpdecim = dsp.ComplexBandpassDecimator(d,Fc,Fs)
bpdecim = dsp.ComplexBandpassDecimator(Name,Value)

Описание

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

пример

bpdecim = dsp.ComplexBandpassDecimator(d) создает комплексную полосу пропускания decimator объект с набором свойств DecimationFactor к d.

пример

bpdecim = dsp.ComplexBandpassDecimator(d,Fc) создает комплексную полосу пропускания decimator объект с набором свойств DecimationFactor к d и набором свойств CenterFrequency к Fc.

пример

bpdecim = dsp.ComplexBandpassDecimator(d,Fc,Fs) создает комплексную полосу пропускания decimator объект с набором свойств DecimationFactor к d, набором свойств CenterFrequency к Fc и набором свойств SampleRate к Fs.

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

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

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

Свойства

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

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

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

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

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

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

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

Отфильтруйте параметры проекта, заданные как:

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

    BW=Fs/D

    где

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

    • D Фактор десятикратного уменьшения.

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

    D=пол(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. Остающиеся этапы фильтра, все с действительными коэффициентами, следуют.

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

Отметьте, чтобы смешать сигнал к основной полосе, заданной как:

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

  • ложь Объект пропускает смесительный этап.

Зависимости

Это свойство применяется, когда вы устанавливаете MinimizeComplexCoefficients на false.

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

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

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

Синтаксис

y = bpdecim(x)

Описание

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

Создайте объект dsp.ComplexBandpassDecimator. Установите DecimationFactor на 12, CenterFrequency к 5 000 Гц и 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

Вычислите комплексную частотную характеристику комплексной полосы пропускания decimator использование функции freqz.

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

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

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

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

Создайте Систему dsp.ComplexBandpassDecimator object™ с центральным набором частоты к 2 000 Гц, пропускной способностью набора интереса к 1 000 Гц и набора частоты дискретизации к 48 кГц. Фактор десятикратного уменьшения вычисляется как отношение частоты дискретизации к пропускной способности интереса. Вход к decimator является синусоидой с продолжительностью кадра 1 200 выборок с тонами на уровне 1 625 Гц, 2 000 Гц и 2 125 Гц. Создайте осциллограф 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

Функция info отображает информацию о полосе пропускания decimator.

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, чтобы запуститься для 1 000 итераций. В каждой итерации, потоке в 1 200 выборках (один кадр) шумной синусоиды и применяют комплексную полосу пропускания decimator на каждый кадр входного сигнала. Визуализируйте спектр ввода и вывода в спектре анализатор, sa.

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

Полоса пропускания decimator с центральной частотой на уровне 2 000 Гц и пропускной способностью 1 000 Гц передает три тона синусоиды на уровне 1 625 Гц, 2 000 Гц и 2 125 Гц.

Измените центральную частоту decimator к 2 400 Гц и отфильтруйте сигнал.

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

Тоны на уровне 2 000 Гц и 2 125 Гц передаются через decimator, в то время как тон на уровне 1 625 Гц отфильтрован.

Алгоритмы

Комплексная полоса пропускания decimator разработана путем применения комплексного преобразования сдвига частоты на прототипном фильтре lowpass. Прототип lowpass в этом случае является многоскоростным, многоступенчатым фильтром конечного импульсного ответа (FIR). Желаемый сдвиг частоты применяется только к первой стадии. Последующие этапы масштабируют желаемый сдвиг частоты своими соответствующими совокупными факторами десятикратного уменьшения. Для получения дополнительной информации смотрите Комплексный БПФ Проекта и Изменения масштаба Полосового фильтра.

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

Введенный в R2018a