Этот пример показывает, как к lowpass фильтруют сигнал с шумом в MATLAB и визуализируют исходные и отфильтрованные сигналы с помощью спектра анализатор. Для версии Simulink этого примера смотрите Кадры Фильтра Шумного Синусоидального сигнала в Simulink
Входной сигнал является суммой двух синусоид с частотами 1 кГц и 10 кГц. Частота дискретизации составляет 44,1 кГц.
Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3); Sine2 = dsp.SineWave('Frequency',10e3,'SampleRate',44.1e3);
lowpass КИХ-фильтр, dsp.LowpassFilter
, разрабатывает КИХ минимального заказа lowpass фильтр с помощью обобщенного КИХ-алгоритма проекта фильтра Remez. Установите частоту полосы пропускания на 5 000 Гц и частоту полосы задерживания к 8 000 Гц. Пульсация полосы пропускания составляет 0,1 дБ, и затухание полосы задерживания составляет 80 дБ.
FIRLowPass = dsp.LowpassFilter('PassbandFrequency',5000,... 'StopbandFrequency',8000);
Настройте спектр анализатор, чтобы сравнить спектры мощности исходных и отфильтрованных сигналов. Модули спектра являются dBm.
SpecAna = dsp.SpectrumAnalyzer('PlotAsTwoSidedSpectrum',false, ... 'SampleRate',Sine1.SampleRate, ... 'NumInputPorts',2,... 'ShowLegend',true, ... 'YLimits',[-145,45]); SpecAna.ChannelNames = {'Original noisy signal','Low pass filtered signal'};
Этот пример использует основанную на кадре обработку, где данные обрабатываются один кадр за один раз. Каждый кадр данных содержит последовательные выборки от независимого канала. Основанная на кадре обработка выгодна для многих приложений обработки сигналов, потому что можно обработать несколько выборок целиком. Путем буферизации данных в кадры и обработки мультидемонстрационных кадров данных, можно улучшить вычислительное время алгоритмов обработки сигналов. Определите номер выборок на кадр к 4 000.
Sine1.SamplesPerFrame = 4000; Sine2.SamplesPerFrame = 4000;
Добавьте нулевой средний белый Гауссов шум со стандартным отклонением 0,1 к сумме синусоид. Отфильтруйте результат с помощью КИХ-фильтра. При выполнении симуляции спектр анализатор показывает, что частоты выше 8 000 Гц в исходном сигнале ослабляются. Получившийся сигнал поддерживает пик на уровне 1 кГц, потому что это падает в полосе пропускания фильтра lowpass.
for i = 1 : 1000 x = Sine1()+Sine2()+0.1.*randn(Sine1.SamplesPerFrame,1); y = FIRLowPass(x); SpecAna(x,y); end release(SpecAna)
Разработайте многоскоростные фильтры | Отфильтруйте кадры шумного синусоидального сигнала в Simulink | Введение в потоковую передачу обработки сигналов в MATLAB | Проект фильтра Lowpass в MATLAB