exponenta event banner

Фильтрация кадров шумного синусоидального сигнала в MATLAB

В этом примере показано, как фильтровать шумные сигналы нижних частот в MATLAB и визуализировать исходные и отфильтрованные сигналы с помощью анализатора спектра. Пример Simulink см. в разделе Фильтрация кадров шумного синусоидального сигнала в Simulink.

Указать источник сигнала

Входной сигнал представляет собой сумму двух синусоидальных волн с частотами 1 кГц и 10 кГц. Частота дискретизации составляет 44,1 кГц.

Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3);
Sine2 = dsp.SineWave('Frequency',10e3,'SampleRate',44.1e3);

Создать фильтр нижних частот

Фильтр FIR нижних частот, dsp.LowpassFilterразрабатывает фильтр нижних частот FIR минимального порядка с использованием обобщенного алгоритма проектирования фильтра FIR Ремеза. Установите частоту полосы пропускания 5000 Гц, а частоту полосы останова 8000 Гц. Пульсация полосы пропускания составляет 0,1 дБ, а затухание полосы останова - 80 дБ.

FIRLowPass = dsp.LowpassFilter('PassbandFrequency',5000,...
    'StopbandFrequency',8000);

Создать анализатор спектра

Настройте анализатор спектра для сравнения спектров мощности исходных и отфильтрованных сигналов. Единицы спектра - дБм.

SpecAna = dsp.SpectrumAnalyzer('PlotAsTwoSidedSpectrum',false, ...
    'SampleRate',Sine1.SampleRate, ...
    'NumInputPorts',2,...
    'ShowLegend',true, ...
    'YLimits',[-145,45]);

SpecAna.ChannelNames = {'Original noisy signal','Low pass filtered signal'};

Укажите образцы для каждого кадра

В этом примере используется обработка на основе кадров, при которой данные обрабатываются по одному кадру за раз. Каждый кадр данных содержит последовательные выборки из независимого канала. Обработка на основе кадров является выгодной для многих приложений обработки сигналов, поскольку можно обрабатывать несколько выборок одновременно. Буферизация данных в кадры и обработка многопрофильных кадров данных позволяет увеличить вычислительное время алгоритмов обработки сигналов. Установите количество выборок на кадр равным 4000.

Sine1.SamplesPerFrame = 4000;
Sine2.SamplesPerFrame = 4000;

Фильтрация шумового синусоидального сигнала

Добавьте нулевое среднее значение белого гауссова шума со стандартным отклонением 0,1 к сумме синусоидальных волн. Фильтрация результата с помощью фильтра FIR. Во время моделирования анализатор спектра показывает, что частоты выше 8000 Гц в сигнале источника ослаблены. Результирующий сигнал поддерживает пик на частоте 1 кГц, поскольку он падает в полосе пропускания фильтра нижних частот.

for i = 1 : 1000
    x = Sine1()+Sine2()+0.1.*randn(Sine1.SamplesPerFrame,1);
    y = FIRLowPass(x);
    SpecAna(x,y);
end
release(SpecAna)

См. также

| | |