exponenta event banner

dsp. MovingAverage

Скользящее среднее

Описание

dsp.MovingAverage Система object™ вычисляет скользящее среднее входного сигнала по каждому каналу независимо во времени. Объект использует либо метод скользящего окна, либо метод экспоненциального взвешивания для вычисления скользящего среднего. В способе скользящего окна окно заданной длины перемещается по данным, выборка по выборке, и среднее вычисляется по данным в окне. В способе экспоненциального взвешивания объект умножает выборки данных на набор весовых коэффициентов. Среднее значение вычисляется путем суммирования взвешенных данных. Дополнительные сведения об этих методах см. в разделе Алгоритмы.

Для вычисления скользящего среднего входного значения:

  1. Создать dsp.MovingAverage и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

movAvg = dsp.MovingAverage возвращает объект скользящего среднего, movAvg, используя свойства по умолчанию.

movAvg = dsp.MovingAverage(Len) устанавливает WindowLength свойство для Len.

пример

movAvg = dsp.MovingAverage(Name,Value) задает дополнительные свойства с помощью Name,Value пар. Неопределенные свойства имеют значения по умолчанию.

Пример: movAvg = dsp.MovingAverage('Method','Exponential weighting','ForgettingFactor',0.9);

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Метод усреднения, указанный как 'Sliding window' или 'Exponential weighting'.

  • 'Sliding window' - Окно длиной, указанной SpecifyWindowLength перемещают по входным данным по каждому каналу. Для каждого образца, на который перемещается окно, объект вычисляет среднее значение по данным в окне.

  • 'Exponential weighting' - объект умножает выборки на набор весовых коэффициентов. Величина весовых коэффициентов уменьшается экспоненциально с увеличением возраста данных, никогда не достигая нуля. Для вычисления среднего значения алгоритм суммирует взвешенные данные.

Дополнительные сведения об этих методах см. в разделе Алгоритмы.

Флаг для указания длины окна, заданного как скалярное логическое значение.

  • true - Длина скользящего окна равна значению, указанному в WindowLength собственность.

  • false - Длина скользящего окна бесконечна. В этом режиме среднее вычисляется с использованием текущей выборки и всех прошлых выборок.

Зависимости

Это свойство применяется при установке Method кому 'Sliding window'.

Длина скользящего окна в выборках, заданная как положительное скалярное целое число.

Зависимости

Это свойство применяется при установке Method кому 'Sliding window' и SpecifyWindowLength кому true.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Экспоненциальный весовой коэффициент, заданный как положительный действительный скаляр в диапазоне (0,1]. Коэффициент забывания 0,9 придает больший вес старым данным, чем коэффициент забывания 0,1. Коэффициент забывания 1,0 указывает на бесконечную память. Всем прошлым образцам придается равный вес.

Поскольку это свойство является настраиваемым, его значение можно изменить, даже если объект заблокирован.

Настраиваемый: Да

Зависимости

Это свойство применяется при установке Method кому 'Exponential weighting'.

Типы данных: single | double

Использование

Синтаксис

Описание

пример

y = movAvg(x) вычисляет скользящее среднее входного сигнала, x, используя либо метод скользящего окна, либо метод экспоненциального взвешивания.

Входные аргументы

развернуть все

Ввод данных, заданный как вектор или матрица. Если x является матрицей, каждый столбец обрабатывается как независимый канал. Скользящее среднее вычисляется по каждому каналу. Объект также принимает входные данные переменного размера. Как только объект заблокирован, можно изменить размер каждого входного канала, но нельзя изменить количество каналов.

Типы данных: single | double
Поддержка комплексного номера: Да

Выходные аргументы

развернуть все

Скользящее среднее входного сигнала, возвращаемого в виде вектора или матрицы.

Типы данных: single | double
Поддержка комплексного номера: Да

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Вычислите скользящее среднее шумного сигнала клина, используя dsp.MovingAverage объект.

Инициализация

Настроить movavgWindow и movavgExp объекты. movavgWindow использует метод скользящего окна с длиной окна 10. movavgExp использует метод экспоненциального взвешивания с коэффициентом забывания 0,9. Создайте область времени для просмотра выходных данных.

FrameLength = 1001;
Fs = 1000;
movavgWindow = dsp.MovingAverage(10);
movavgExp = dsp.MovingAverage('Method','Exponential weighting',...
    'ForgettingFactor',0.9);
scope  = timescope('SampleRate',Fs,...
    'TimeSpanOverrunAction','Scroll',...
    'ShowGrid',true,...
    'YLimits',[-0.5 1.5]);
title = 'Sliding Window Average(blue) and Exponentially Weighted Average(red)';
scope.Title = title;

Вычислить среднее значение

Создайте сигнал с амплитудой 1,0 и временным интервалом 2 секунды. Примените скользящее и экспоненциально взвешенное среднее к пандусу. Просмотрите выходные данные области времени.

for i = 1:500
    t = (0:0.001:1)';
    unitstep = t>=0;
    ramp = t.*unitstep;
    x = ramp + 0.1 * randn(FrameLength,1);
    y1 = movavgWindow(x);
    y2 = movavgExp(x);
    scope([x,y1,y2]);
end

Алгоритмы

развернуть все

Ссылки

[1] Боденем, Дин. «Адаптивная фильтрация и обнаружение изменений потоковых данных». PH.D. Дипломная работа. Имперский колледж, Лондон, 2012 год.

Расширенные возможности

.
Представлен в R2016b