В этом примере показано, как использовать системные объекты для обработки потокового сигнала в MATLAB. Сигналы считываются и обрабатываются система координат за кадром (или блок за блоком) в каждом цикле обработки. Вы можете управлять размером каждой системы координат.
В этом примере системы координат 1024 выборок фильтруют с использованием фильтра с узким пиком в каждом цикле обработки. Вход является синусоидой сигналом, который передается системой координат по системе координат от dsp.SineWave
объект. Фильтр является узкополосным фильтром, созданным с помощью dsp.NotchPeakFilter
объект. Чтобы гарантировать плавность обработки при фильтрации каждой системы координат, системные объекты автоматически поддерживают состояние фильтра от одной системы координат до следующего.
Инициализируйте источник синусоиды, чтобы сгенерировать синусоиду, фильтр с узким пиком для фильтрации синусоида и анализатор спектра, чтобы показать отфильтрованный сигнал. Вход синусоиды имеет две частоты: одна на 100 Гц, а другая на 1000 Гц. Создайте два dsp.SineWave
объекты, один для генерации синусоида 100 Гц, другой для генерации синусоиды 1000 Гц.
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-dB полосе пропускания надреза. Если вы настраиваете параметры фильтра во время потоковой передачи, вы можете увидеть эффект сразу в выходе анализатора спектра.
Wo = 750; Q = 35; BW = Wo/Q; NotchFilter = dsp.NotchPeakFilter('Bandwidth',BW,... 'CenterFrequency',Wo, 'SampleRate',Fs); fvtool(NotchFilter);
Создайте цикл for-для выполнения 3000 итераций. В каждой итерации поток в 1024 выборках (одна система координат) синевы и прикладывает узкополосный фильтр к каждой системе координат входного сигнала. Чтобы сгенерировать входной сигнал, добавьте две синусоиды. Результирующий сигнал является синусоидой с двумя частотами: одна на 100 Гц и другая на 1000 Гц. Надрез фильтра настраивается на частоту 100, 500, 750 или 1000 Гц на основе значения 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 Гц полностью обнуляется узкополосным фильтром, в то время как частота на 1000 Гц не влияет.
Проект многоскоростных фильтров | Фильтрация систем координат сигнала шумного Sine wave в MATLAB | Фильтрация систем координат сигнала шумного Sine wave в Simulink | Lowpass БИХ Создания фильтра в Simulink