dsp.MovingRMS

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

Описание

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

Для вычисления скользящего 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' - Объект умножает квадраты выборок на набор весовых коэффициентов. Величина весовых коэффициентов уменьшается экспоненциально, когда возраст данных увеличивается, никогда не достигая нуля. Чтобы вычислить RMS, алгоритм суммирует взвешенные данные и принимает квадратный корень из суммы.

Для получения дополнительной информации об этих методах см. «Алгоритмы».

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Вычислите движущийся RMS сигнала шумной квадратной волны с изменяющейся амплитудой, используя 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