dsp.MovingStandardDeviation

Перемещение стандартного отклонения

Описание

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

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

  1. Создайте dsp.MovingStandardDeviation Объекту и установите его свойства.

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

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

Создание

Описание

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

пример

MovStd = dsp.MovingStandardDeviation(Len) устанавливает WindowLength свойство к Len.

пример

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

Пример: MovStd = dsp.MovingStandardDeviation('Method','Exponential weighting','ForgettingFactor',0.999);

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и 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].

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

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

Зависимости

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

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

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

Синтаксис

Описание

пример

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

Входные параметры

расширить все

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

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

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

расширить все

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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

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

FrameLength = 100;
Fs = 100;
movstdWindow = dsp.MovingStandardDeviation(800);
movstdExp = dsp.MovingStandardDeviation(...
    'Method','Exponential weighting',...
    'ForgettingFactor',0.999);
scope  = timescope('SampleRate',Fs,...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpanSource','Property',...
    'TimeSpan',1000,...
    'ShowGrid',true,...
    'BufferLength',1e7,...
    'YLimits',[0 3e-2]);
title = 'Actual (yellow) Sliding Window (blue) Exponentially Weighted (red) standard deviation';
scope.Title = title;

Вычисление стандартного отклонения

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

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

Алгоритмы

расширить все

Ссылки

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

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

.
Введенный в R2016b