Введение в потоковую передачу обработки сигналов в MATLAB

В этом примере показано, как использовать Системные объекты, чтобы сделать обработку сигналов потоковой передачи в MATLAB. Сигналы читаются в и обработанный кадр системой координат (или блок блоком) в каждом цикле обработки. Можно управлять размером каждой системы координат.

В этом примере системы координат 1 024 выборок отфильтрованы с помощью пика метки, просачиваются каждый цикл обработки. Вход является синусоидальным сигналом, который передается система координат потоком системой координат от dsp.SineWave объект. Фильтр является созданным использованием пикового меткой фильтра dsp.NotchPeakFilter объект. Чтобы гарантировать сглаженную обработку как, каждую систему координат отфильтрована, Системные объекты обеспечивают состояние фильтра от одной системы координат до следующего автоматически.

Инициализируйте компоненты потоковой передачи

Инициализируйте источник синусоиды, чтобы сгенерировать синусоиду, пиковый меткой фильтр, чтобы отфильтровать синусоиду и спектр анализатор, чтобы показать отфильтрованный сигнал. Входная синусоида имеет две частоты: один на уровне 100 Гц, и другой на уровне 1 000 Гц. Создайте два dsp.SineWave объекты, один, чтобы сгенерировать синусоиду на 100 Гц и другой, чтобы сгенерировать синусоиду на 1 000 Гц.

Fs = 2500;
Sineobject1 = dsp.SineWave('SamplesPerFrame',1024,...
                     'SampleRate',Fs,'Frequency',100);
Sineobject2 = dsp.SineWave('SamplesPerFrame',1024,...
                     'SampleRate',Fs,'Frequency',1000);

SA = dsp.SpectrumAnalyzer('SampleRate',Fs,'NumInputPorts',2,...
    'PlotAsTwoSidedSpectrum',false,...
    'ChannelNames',{'SinewaveInput','NotchOutput'},'ShowLegend',true);

Создайте пиковый меткой фильтр

Создайте БИХ-фильтр пика метки второго порядка, чтобы отфильтровать синусоидальный сигнал. Фильтр имеет метку на уровне 750 Гц и Q-фактор 35. Более высокий Q-фактор приводит к более узкой пропускной способности на 3 дБ метки. Если вы настраиваете параметры фильтра во время потоковой передачи, вы сразу видите эффект в спектре анализатор выход.

Wo = 750;
Q  = 35;
BW = Wo/Q;
NotchFilter = dsp.NotchPeakFilter('Bandwidth',BW,...
    'CenterFrequency',Wo, 'SampleRate',Fs);
fvtool(NotchFilter);

Поток в и сигнал процесса

Создайте цикл for, чтобы запуститься для 3 000 итераций. В каждой итерации, потоке в 1 024 выборках (одна система координат) sinewave и применяют фильтр метки на каждую систему координат входного сигнала. Чтобы сгенерировать входной сигнал, добавьте эти две синусоиды. Результирующий сигнал является синусоидой с двумя частотами: один на уровне 100 Гц и другой на уровне 1 000 Гц. Метка фильтра настраивается на частоту 100, 500, 750, или 1 000 Гц, на основе значения VecIndex. Пропускная способность фильтра изменяется соответственно. Когда изменение параметров фильтра во время потоковой передачи, выхода в спектре анализатор обновляется соответственно.

FreqVec = [100 500 750 1000];
VecIndex = 1;
VecElem = FreqVec(VecIndex);
for Iter = 1:3000
    Sinewave1 = Sineobject1();
    Sinewave2 = Sineobject2();
    Input = Sinewave1 + Sinewave2;
    if (mod(Iter,350)==0)
        if VecIndex < 4
            VecIndex = VecIndex+1;
        else
            VecIndex = 1;
        end
        VecElem = FreqVec(VecIndex);
    end
    NotchFilter.CenterFrequency = VecElem;
    NotchFilter.Bandwidth = NotchFilter.CenterFrequency/Q;
    Output = NotchFilter(Input);
    SA(Input,Output);
end
fvtool(NotchFilter)

В конце цикла обработки, CenterFrequency на уровне 100 Гц. В фильтре выход частота на 100 Гц полностью обнулена фильтром метки, в то время как частота на уровне 1 000 Гц незатронута.

Смотрите также

| | |