В области обработки сигналов одной из распространенных задач является удаление шума или нежелательных колебаний из сигнала, сохраняя при этом лежащую в его основе тенденцию или информацию. Этот процесс известен как сглаживание сигнала, и MATLAB предоставляет множество методов для его эффективного выполнения. В этой статье мы рассмотрим несколько популярных методов сглаживания сигналов с использованием MATLAB, а также приведем примеры кода, демонстрирующие их реализацию.
- Скользящее среднее.
Метод скользящего среднего — это простой, но эффективный метод сглаживания сигналов. Он предполагает замену каждой точки данных средним значением соседних точек в указанном окне. Вот пример фрагмента кода:
windowSize = 5;
smoothedSignal = movmean(signal, windowSize);
- Фильтр Савицкого-Голея.
Фильтр Савицкого-Голея — это широко используемый метод сглаживания сигнала, который подбирает полином к небольшим подмножествам данных и использует полином для оценки сглаженных значений. MATLAB предоставляет удобную функцию для применения этого фильтра:
windowSize = 5;
polynomialOrder = 2;
smoothedSignal = sgolayfilt(signal, polynomialOrder, windowSize);
- Фильтрация нижних частот.
Фильтрация нижних частот — это метод, который ослабляет высокочастотные компоненты сигнала, сохраняя при этом низкочастотные компоненты. ФункцияlowpassMATLAB может использоваться для применения низкочастотной фильтрации:
cutoffFrequency = 10; % Adjust as per your signal characteristics
smoothedSignal = lowpass(signal, cutoffFrequency);
- Медианная фильтрация.
Медианная фильтрация – это нелинейный метод, при котором каждая точка данных заменяется медианным значением в пределах указанного окна. Этот метод эффективен для удаления выбросов и импульсного шума. Вот пример медианной фильтрации в MATLAB:
windowSize = 5;
smoothedSignal = medfilt1(signal, windowSize);
- Экспоненциальное сглаживание.
Экспоненциальное сглаживание присваивает веса предыдущим значениям сигнала и вычисляет сглаженное значение как взвешенную сумму. MATLAB предоставляет функциюsmoothdataдля экспоненциального сглаживания:
smoothedSignal = smoothdata(signal, 'exponential');
Сглаживание сигнала играет жизненно важную роль в повышении качества и интерпретируемости данных в приложениях обработки сигналов. В этой статье мы исследовали различные методы сглаживания сигналов с использованием MATLAB, включая скользящее среднее, фильтр Савицкого-Голея, фильтрацию нижних частот, медианную фильтрацию и экспоненциальное сглаживание. Используя эти методы, вы можете уточнить свои сигналы и извлечь значимую информацию из зашумленных или нестабильных данных.