exponenta event banner

dsp. MovingRMS

Скользящий корневой средний квадрат

Описание

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

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

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

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

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

Создание

Описание

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

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

пример

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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

FrameLength = 10;
Fs = 100;
movrmsWin = dsp.MovingRMS(20);
movrmsExp = dsp.MovingRMS('Method','Exponential weighting',...
    'ForgettingFactor',0.995);
scope  = timescope('SampleRate',Fs,...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpanSource','Property',...
    'TimeSpan',100,...
    'ShowGrid',true,...
    'YLimits',[-1.0 5.5]);
title = 'Sliding Window RMS (blue) and Exponentially Weighted RMS (red)';
scope.Title = title;

Вычислить RMS

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

count = 1;
Vect = [1/8 1/2 1 2 3 4];
for index = 1:length(Vect)
    V = Vect(index);
    for i = 1:160
        x = V + 0.1 * randn(FrameLength,1);
        y1 = movrmsWin(x);
        y2 = movrmsExp(x);
        scope([x,y1,y2]);
    end
end

Алгоритмы

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

Ссылки

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

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

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