В этом примере показано, как использовать Системные объекты, чтобы сделать обработку сигналов потоковой передачи в 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 Гц незатронута.
Спроектируйте многоскоростные фильтры | Отфильтруйте кадры зашумленного синусоидального сигнала в MATLAB | Отфильтруйте системы координат шумного синусоидального сигнала в Simulink | БИХ-создание фильтра lowpass в Simulink