exponenta event banner

dsp. MovingVariance

Скользящее отклонение

Описание

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

Чтобы вычислить скользящую дисперсию входного сигнала:

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

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

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

Создание

Описание

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

пример

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

пример

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

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

Свойства

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

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

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

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

  • '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 = movVar(x) вычисляет дисперсию движения входного сигнала, x, используя либо метод скользящего окна, либо метод экспоненциального взвешивания.

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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

FrameLength = 100;
Fs = 100;
movvarWindow = dsp.MovingVariance(800);
movvarExp = dsp.MovingVariance('Method','Exponential weighting',...
    'ForgettingFactor',0.999);
scope  = timescope('SampleRate',Fs,...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpanSource','Property',...
    'TimeSpan',1000,...
    'ShowGrid',true,...
    'BufferLength',1e7,...
    'YLimits',[0 7e-4]);
title = 'Actual (yellow) Sliding Window (blue) Exponentially Weighted (red) variance';
scope.Title = title;

Вычислить расхождение

Генерировать шумный сигнал прямоугольной волны. Изменение амплитуды квадратной волны после заданного числа кадров. Примените к этому сигналу метод скользящего окна и метод экспоненциального взвешивания. Фактическое отклонение - np. Это значение используется при добавлении шума к данным. Сравните фактическое отклонение с вычисленными отклонениями во временном диапазоне.

count = 1;
noisepower = 1e-4 * [1 2 3 4];
index = 1;
for index = 1:length(noisepower)
    np = noisepower(index);
    yexp = np*ones(FrameLength,1);
    for i = 1:250
        x = 1 + sqrt(np) * randn(FrameLength,1);
        y1 = movvarWindow(x);
        y2 = movvarExp(x);
        scope([yexp,y1,y2]);
    end
end

Алгоритмы

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

Ссылки

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

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

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