exponenta event banner

dsp. ComplexBandpassDecimator

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

Описание

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

Для извлечения частотного поддиапазона с использованием комплексного полосового прореживателя:

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

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

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

Создание

Описание

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

пример

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

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

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

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

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

Зависимости

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

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

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

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

Синтаксис

Описание

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Вычислить стоимость реализации сложного полосового прореживателя с помощью 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

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 Гц отфильтровывается.

Алгоритмы

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

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

.
Представлен в R2018a