dsp.MovingAverage

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

Описание

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

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

  1. Создайте dsp.MovingAverage объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Описание

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 Используя Системные объекты (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
Поддержка комплексного числа: Да

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

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

release(obj)

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

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

Примеры

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

Вычислите скользящее среднее значение шумного сигнала пандуса использование 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  = dsp.TimeScope('SampleRate',Fs,...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpan',2,...
    '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.

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

Введенный в R2017b